一、前言准备
1、小熊派一个(STM32L431RCT6)
2、STM32CubeMX
3、keil5
4、小熊派的配套开发资料(用于出问题的时候替换)
二、实现过程
代码主要由STM32CubeMX生成,所以过程主要是配置CubeMX.
1、芯片选型 STM32L431RCT6
2、查看原理图,找到LED灯(GPIOC 13),并配置对应IO
高电平点亮,所以将输出改为高
3、配置系统时钟
Debug采用串口调试,系统时钟不能选用滴答定时器,选择其他的定时器,因为FreeRTOS是使用了该定时器
4、配置FreeRTOS系统
配置任务,将默认的任务更改成LEDTask,一个是好查找,一个是防止改错
5、配置输出文件
此处选两个中任意一个皆可,第一个是加载所有的库文件,第二个是选必要的库文件
然后点击生成代码即可
6、编译程序 ,解决一些问题
error: L6236E: No section matches selector - no section to be FIRST/LAST.
原因:
是由于没有加启动文件,双击左边工程框的文件夹,添加Startup开头的.s文件即可。(可以去小熊派的源码中找)
这个问题是因为CUBEMX工程在中文目录下,全部切换到英文就没有个这个问题了,有趣的是,还自动生成了启动文件在项目目录内,但就是不在keil里面,只要将项目目录中的启动文件加到keil工程中就可以了。
解决过程:
添加启动文件后,编译不会报错了
7、修改LEDTask任务
找到freertos.c文件,添加点灯代码
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin, GPIO_PIN_SET);
osDelay(1000);
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin, GPIO_PIN_RESET);
osDelay(1000);
8、下载程序
配置下载接口
下载后,重启小熊派就可以实现LED闪烁了