1回答

1收藏

麒麟座MINI开发板-STM32CubeMX+FreeRTOS初试

物联网 物联网 3930 人阅读 | 1 人回复 | 2017-10-29

    最近在学习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同时闪烁。


分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

yanhaijian

发表于 2017-10-31 08:19:19 | 只看该作者

不知道其他友商有没有类似STM32CubeMX的工具,这个工具确实方便了广大开发者。
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条