stm32f103库函数

注意:外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟。
每组IO口含下面7个寄存器, 也就是7个寄存器, 一共可以控制一组GPIO的16个IO口

		- GPIOx_CRL :端口配置低寄存器
        - GPIOx_CRH:端口配置高寄存器
        - GPIOx_IDR:端口输入寄存器
        - GPIOx_ODR:端口输出寄存器
        - GPIOx_BSRR:端口位设置/清除寄存器
        - GPIOx_BRR :端口位清除寄存器
        - GPIOx_LCKR:端口配置锁存寄存器

头文件:stm32f10x_gpio.h
源文件:stm32f10x_gpio.c

重要函数:

1个初始化函数:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//第一个参数是指定初始化哪一组IO口,
//第二个参数是指定具体是哪一个IO口,对IO口的模式,输出速度,上拉下拉进行设置   
typedef struct
   {
     
     uint16_t GPIO_Pin;           //指定要初始化的IO口         
    GPIOSpeed_TypeDef GPIO_Speed; //设置IO口输出速度
    GPIOMode_TypeDef GPIO_Mode;   //设置工作模式:8种中的一个
   }GPIO_InitTypeDef;
   //使用样例
 GPIO_InitTypeDef  GPIO_InitStructure;
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);	 //根据设定参数初始化GPIOB.5

2个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

2个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

4个设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

Led点灯实验代码

进行时钟使能 , 和GPIO初始化
GPIO_InitTypeDef   GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE时钟使能

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;		   //设置哪一个IO口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置速度
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5);					//设置为高电频(默认不点亮)

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;		   //设置哪一个IO口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置速度
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_5);					//设置为高电频(默认不点亮)

GPIO_ReseBits(GPIOB,GPIO_Pin_5);				//设置为低电频(使灯点亮)
GPIO_ReseBits(GPIOE,GPIO_Pin_5);				//设置为低电频(使灯点亮)

按键实验库函数

	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
 	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4

	//初始化 WK_UP-->GPIOA.0	  下拉输入
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入,默认下拉	  
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.0

	GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);//读取按键状态库函数  返回结果是 0 或者 1

串口函数

常用的串口相关寄存器


USART_SR 状态寄存器 

USART_DR 数据寄存器 (发送,读取数据)

USART_BRR 波特率寄存器 

USART_CR 使能寄存器

串口操作相关库函数(省略入口参数):

void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能

void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断


void USART_SendData();//发送数据到串口,
DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据


FlagStatus USART_GetFlagStatus();//获取状态标志位

void USART_ClearFlag();//清除状态标志位

ITStatus USART_GetITStatus();//获取中断状态标志位

void USART_ClearITPendingBit();//清除中断状态标志位

你可能感兴趣的:(stm32,ARM,嵌入式)