麒麟座MINI开发板-STM32CubeMX+FreeRTOS初试
物联网
3930 人阅读
|
1 人回复
|
2017-10-29
TA的每日心情 | 开心 2017-12-5 20:32 |
|---|
签到天数: 10 天 连续签到: 2 天 [LV.3]偶尔看看II
童生
- 积分
- 124
|
最近在学习FreeRTOS,看了网上的一些教程,发现用STM32CubeMX软件开发FreeRTOS非常的简单和便捷,今天刚好有点闲时间,就在麒麟座MINI开发板上试了试,主要实现了利用FreeRTOS控制4个LED灯的闪烁。
1.开发工具
STM32CubeMX V4.230 ,Keil MDK5.14 ,麒麟座MINI开发板,ST-LINNK V2下载器
2. STM32CubeMX软件配置流程
第一步,打开STM32CubeMX软件后,创建新工程,选择主控芯片。麒麟座MINI开发板的CPU是STM32F103CBT6,选择芯片后双击进入配置界面。
先配置RCC,选择外部时钟。这里选择外部高速时钟:12M晶振
再配置DEBUG方式,这里我们选得是串行SW方式。由于FreeRTSO使用了Systick作为时钟节拍,而HAL库也使用了Systick作为HAL_Delay()和各种timeout的时钟基准。因此需要将HAL的时钟基准改为其他TIMER,这里选择TIM1作为HAL库的时钟基准。
接下来是LED端口设置。查看麒麟座MINI开发板LED控制端,将PB6,PB7,PB8,PB9设置为输出端口。
麒麟座MINI开发板用的是12M的晶振,经过倍频后输出最大72MHz时钟给系统和外设使用。
功能配置,选择FreeRTOS后,需要对RTOS和GPIO进行配置。
在RTOS功能配置中,我们只修改任务这一项,其他均采用默认配置。增加了四个LED任务,任务优先级相同,栈大小均设为128word,保存设置。
将四个GPIO口进行命名,推挽输出,默认输出为高电平。
配置完成后,点击生成源代码,设置好工程名,选择KEIL MDK作为IDE,生成的工程如下:
在main函数中,通过GPIO初始化函数MX_GPIO_Init()和RTOS初始化函数MX_FREERTOS_Init()找到相关的文件对GPIO端口和任务进行操作。
在gpio.h文件中对四个LED的开关进行了定义。
在freertos.c文件中可以看到生成的四个任务,我们在任务里加入LED开关代码。
至此,所有操作都完成了,保存文件、工程,编译下载到麒麟座MINI开发板中,就可以看到四个LED同时闪烁。
|
|
|
|
|
|
|
|
|
TA的每日心情 | 奋斗 2021-3-13 10:11 |
|---|
签到天数: 1088 天 连续签到: 2 天 [LV.10]以坛为家III
状元
- 积分
- 5341
    
|
沙发
yanhaijian
发表于 2017-10-31 08:19:19
|
只看该作者
|
不知道其他友商有没有类似STM32CubeMX的工具,这个工具确实方便了广大开发者。 |
|
|
|
|
|
|
|
|