stm32 软件开发流程总结

时间:2024-03-05 19:51:49

1. 建立工程模板

  • 建相关文件 夹, 添加库文件
  • 配置系统宏定义和头文件包含路径
  • mdk 软件配置

2. 配置系统时钟

系统时钟是整个系统运行的三要素之一(还有电源、复位),
这里主要配置 分频系数M、P 倍频系数 N

3. 测试系统时钟

配置完系统时钟,还要验证一下时钟是否是我们所期望的,这里提供几种方法,仅供参考:

  • 查看变量 SystmeCoreClock 的值
  • 通过硬件仿真查看

内部时钟存在偏差,可通过修改校准寄存器的值修正,以下是修正前后从mco时钟输出引脚测得的内部高速时钟频率

修正前:

修正后:

4. 配置系统打印调试串口

嵌入式平台由于资源的限制,一般没有显示设备,所以通常通过串口调进行调试

5. 看门狗

  • 在后台主循环里加入 喂狗操作,可防止程序死循环,因得不到及时喂狗,导致程序复位
  • 在中断里加入喂狗操作(喂狗间隔时间一定要长于主循环里的喂狗时间),防止中断意外关闭

6. RTC

RTC可以为系统提供时间信息, 定时中断(唤醒)

7. GPIO 口操作

GPIO 操作流程:
1) 打开外设端口时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
2) 填充 GPIO_Init_TypeDef 结构体
3) 调用Gpio_Init() 配置端口

注意 :调用Gpio_Init() 函数之前必须先打开外设端口时钟

8. 定时器

  • 定时器实现精确定时
  • 脉冲计数
  • pwm脉冲

9. 中断

中断是前后台系统运行的关键, 可提高程序的响应能力
中断编写注意事项:

10. I2C

I2C是系统重要的内部总线,用于连接mcu和片上其他外设,只需2根线即可实现数据通讯

11. SPI

SPI是高速的内部总线

12. 搭建系统框架

裸机程序规模增大之后,如果不搭建一个合适的系统框架,系统维护和扩展将会是一件棘手的工作,
常见的系统框架如下:
1)时间片轮询系统
2)基于消息轮询的系统
3)转态机

13. 面向对象的思想编程

用结构体实现封装
结构体成员变量表示属性
结构体 函数指针 成员变量表示方法

14. 面向接口的编程

面向接口的编程有如下优点:

  • 高内聚,低耦合
  • 提高系统的可扩展性和可维护性
  • 为实现分层提供了有力的保障