STM32片上外设
Preipheral
英文 | 名称 | 英文 | 名称 | |
---|---|---|---|---|
NVIC | 嵌套向量中断控制器 | USB | USB通信 | |
SysTick | 系统滴答定时器 | USART | 同步/异步串口通信 | |
RCC | 复位和时钟控制 | I2C | I2C通信 | |
GPIO | 通用IO口 | SPI | SPI通信 | |
AFIO | 复用IO口 | CAN | CAN通信 | |
EXTI | 外部中断 | PWR | 电源控制 | |
TIM | 定时器 | BKP | 备份寄存器 | |
ADC | 模数转换器 | IWDG | 独立看门狗 | |
DAC | 数模转换器 | WWDG | 窗口看门狗 | |
DMA | 直接内存访问 | SDIO | SD卡接口 | |
RTC | 实时时钟 | FSMC | 可变静态存储控制器 | |
CRC | CRC校验 | USB OTG | USB主机接口 |
共同代码
初始化
一般都是 RCC 开启时钟,GPIO 初始化,然后再为特定外设的初始化
外设基本代码:都是使用结构体初始化。
定义结构体、给结构体赋值、将结构体地址传递
//封装的代码
void Preipheral_DeInit(void);
void Preipheral_Init(Preipheral_InitTypeDef* Preipheral_InitStruct);
void Preipheral_StructInit(Preipheral_InitTypeDef* Preipheral_InitStruct);
//实际操作
Preipheral_InitTypeDef Preipheral_InitStruct ; //定义结构体
Preipheral_InitStruct.member1= ;
Preipheral_InitStruct.member2= ;
//... 引出结构体的成员,进行赋值
Preipheral_Init(&Preipheral_InitStruct); //将结构体的地址传入,进行初始化
状态标志位
状态标志位,在状态寄存器中
FlagStatus Preipheral_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void Preipheral_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus Preipheral_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void Preipheral_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
中断配置
说明
注意
调用初始化函数,将结构体地址传入函数时,就写入到硬件的寄存器中了
所以可以直接更改值继续使用,初始化其他外设
Preipheral_InitTypeDef Preipheral_InitStruct;
Preipheral_InitStruct.member1=x1;
Preipheral_InitStruct.member2=y1;
Preipheral1_Init(&Preipheral_InitStruct);
Preipheral_InitTypeDef Preipheral_InitStruct;
Preipheral_InitStruct.member1=x2;
Preipheral_InitStruct.member2=y2;
Preipheral2_Init(&Preipheral_InitStruct);