1、创建符合自己风格的工程
- 需要准备以下文件:
- 处理器的启动文件:startup_stm32xxx.s,这个文件在Driver\STM32xxx_HAL_Driver\Inc\stm32f1xx_hal_conf_template.h
- 处理器的库文件:STM32XXX_HAL_Driver
- CMSIS标准接口文件有:startup_stm32xxx.s system_stm32xxx.c system_stm32xxx.h
- 处理器的中断文件:stm32xxx_it.c/h,在Projects下任意一个例程中找到,最好找名称为Templates的工程中,因为这里的中断服务函数是内核所必须的,是比较“干净”的文件。
- 处理器的配置文件:STM32xxx_hal_conf.h,这个文件在Driver\STM32xxx_HAL_Driver\Inc\stm32f1xx_hal_conf_template.h
2、裸机模式软件框架
3、RTOS模式软件框架
比裸机模式软件框架只多了一个中间件层
4、CubeMX创建工程:
步骤1、SYS中Debug选serial wire,这样就可以调试了
步骤2、时钟配置
步骤3、配置好使用的外设,各个管脚的初始化电平要配置正确。
步骤4、从Middleware处添加freertos
STM32CubeMX生成的代码中TAB为2个空格大小,用户程序单独建文件写,自动生成的 main.c 中只添加两行跳转代码就好了,不混在一起就没必要改它的风格,就算改了下次重新生成又会变回原来的样子。
5、FreeRTOS任务通知
设置宏configUSE_TASK_NOTIFICATIONS为1(或不定义宏configUSE_TASK_NOTIFICATIONS)将会开启任务通知功能,有关的API函数也会被编译。设置宏configUSE_TASK_NOTIFICATIONS为0则关闭任务通知功能,相关API函数也不会被编译。默认这个功能是开启的。开启后,每个任务多增加8字节RAM。
这是个很有用的特性,一大亮点。
每个RTOS任务具有一个32位的通知值,RTOS任务通知相当于直接向任务发送一个事件,接收到通知的任务可以解除任务的阻塞状态(因等待任务通知而进入阻塞状态)。相对于以前必须分别创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然更灵活。更好的是,相比于使用信号量解除任务阻塞,使用任务通知可以快45%