STM32F4库函数开发的一些小套路

来源:互联网 发布:澳门日报电子版软件 编辑:程序博客网 时间:2024/04/28 19:25

STM32F4库函数开发的一些小套路

使用过一段时间STM32库函数的人应该都会发现,使用库函数开发存在一些套路。我总结一点我发现的小套路。

初始化的小套路

通常而言,初始化基本包含了三个部分:使能时钟,配置相关寄存器,使能。不过很多初始化不止这三个步骤,例如:

外部中断:

① 使能I/O口时钟 RCC_AHB1PeriphClockCmd(GPIOx, ENABLE);
配置相关寄存器 GPIO_Init(GPIOx, &GPIO_InitStructure);

② 开启SYSCFG时钟。只要使用到了外部中断,都必须打开SYSCFG时钟。
将GPIO与中断映射起来。
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSourceX );

③ 初始化线上中断,设置中断条件
EXTI_Init(&EXTI_InitStructure);

④ 配置中断分组(NVIC),使能中断
NVIC_Init(&NVIC_InitStructure);

⑤ 便携中断服务函数
EXTIx_IRQHandler();
在中断服务函数中,必须清除中断标志位
EXTI_ClearITPendingBit(EXTI_LineX);

⑥ 在主函数中设置系统中断优先级分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

配置寄存器的小套路

一般来说,初始化结构体类型都是这样:XXXX_InitTypeDef 例如:GPIO_InitTypeDef
同时我们也习惯将初始化结构体命名为:XXXX_InitStructure;

初始化结构体各个成员变量的功能命名同样有规律,例如:

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;            //选中GPIOE2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;       //普通输入模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //100MGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        //上拉GPIO_Init(GPIOE, &GPIO_InitStructure);                //初始化GPIOE2

可以看见,功能直接加在成员变量后面:

GPIO_Mode_XX    //AF为复用,OUT为输出,IN为输入,AN为模拟GPIO_PuPd_XX    //UP为上拉,DOWN为下拉,NOPULL为浮空

函数命名的小套路:

STM32F4库函数的可读性很强,所以函数名,参数,返回值一样有规律:
① 函数名:XXXX_Init()
功能: 初始化
返回值:无
参数: 至少包含初始化结构体
例子: GPIO_Init(GPIOx, GPIO_InitStructure);

② 函数名:XXXX_GetFlagStatus()
功能: 检查外设事件标志位
返回值:SET或者RESET
参数: 标志名
例子: USART_GetFlagStatus(USART, USART_FLAG_RXNE);

③ 函数名:XXXX_GetITStatus()
功能: 检查中断标志位
返回值:SET或者RESET
参数: 中断标志名
例子: EXTI_GetITStatus(EXTI_Line3);

④ 函数名:XXXX_ClearITPendingBit();
功能: 清除中断标志位
返回值:无
参数: 中断标志
例子: EXTI_ClearPendingBit(EXTI_Line3);

⑤ 函数名:XXXX_Cmd()
功能: 使能或关闭
返回值:无
参数: 想要控制的外设名和ENABLE或者DISABLE
例子: TIM_Cmd(TIM3, ENABLE);

1 0
原创粉丝点击