搜索
查看: 4058|回复: 5

[原创] 基于STM32CUBEMX的NUCLEO-L496ZG任务创建、信号量、队列实例测评

[复制链接]

该用户从未签到

2

主题

5

帖子

2

蝴蝶豆

初级会员

最后登录
2018-9-28
发表于 2018-5-19 22:09:47 | 显示全部楼层 |阅读模式
本帖最后由 tsuibeyond 于 2018-5-19 22:14 编辑

准备工作:
NUCLEO-L496ZG开发板
一根micro USB线
预装STM32CubeMX
预装IAR8.22

实验任务:
  • 用STM32CubeMX完成代码基本框架的生成
  • 借助FreeRTOS完成前后台任务运行机制,涉及内容包括任务创建、信号量、队列等。

实验内容:
  • 用STM32CubeMX进行配置,直接新建工程,选择L496ZG的板子
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image.png
1.png
弹出对话框,选择默认设置模式
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(1).png
2.png
进入界面如下:
3.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(2).png
修改时钟配置
4.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(3).png
使能FreeRTOS
5.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(4).png
修改TimeBase Source
6.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(5).png
时钟树配置:
7.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(6).png
然后生成代码
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(7).png
8.png
不明白为什么,这个流程生成的代码有个时钟不能配置通过,需要将其注释掉,才能正常启动(求大神解释)
  /*
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
  */



实验1:创建任务
这里,我们采用图形化界面创建任务
9.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(8).png
手动输入任务参数:
10.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(9).png
生成代码(注意还要注释前面的那个时钟配置判断),添加必要的头文件
11.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(10).png
编译运行,就可以观察到LED灯在闪

然后创建第二个任务 串口打印
首先配置串口参数
12.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(11).png
然后手动添加任务
13.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(12).png
同上一步一样,生成代码
14.png
添加printf支持代码
#include "stdio.h"  
#ifdef __GNUC__  
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
#else  
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
#endif /* __GNUC__ */  
PUTCHAR_PROTOTYPE  
{  
    HAL_UART_Transmit(&hlpuart1 , (uint8_t *)&ch, 1, 0xFFFF);  
    return ch;  
}

file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(13).png
在freertos.c中添加任务代码
15.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(14).png
编译运行,可以观察到串口打印出信息


实验2:信号量的使用
同样使用图形化界面进行配置,如下图所示:
16.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(15).png
点击生成代码
17.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(16).png
代码修改:
18.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(17).png
编译运行,就可以发现灯每闪烁一次,串口就打印一次
19.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(18).png

实验3:信号量的使用
如下图进行配置,点击OK,保存
20.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(19).png
生成代码
21.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(20).png
程序修改,红色部分是添加的内容,定义一个变量,然后队列每次发送的数据都自动加1,队列数据接收部分接收数据后,将接收到的数据打印出来
22.png
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(21).png
最后运行程序,效果如下图所示,
23.png

上述内容只是关于freeRTOS的基本操作,但是能够满足一般工程的应用需求了。
正在做基于freeRTOS的通用机器人(如多旋翼)程序,待实现基本功能后再开贴发布
file:///C:/Users/TS/AppData/Local/Temp/enhtmlclip/Image(22).png
代码工程:(网络似乎又有问题了,后面再上传)
TEST.part01.rar (9 MB, 下载次数: 51)
回复

使用道具 举报

该用户从未签到

40

主题

250

帖子

92

蝴蝶豆

金牌会员

最后登录
2024-4-19
发表于 2018-5-20 11:49:11 | 显示全部楼层
可以 的  支持  
问问IAR和KEIL比较 有那个地方比较好吗
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

5

帖子

2

蝴蝶豆

初级会员

最后登录
2018-9-28
 楼主| 发表于 2018-5-21 12:23:56 | 显示全部楼层
与龙共舞 发表于 2018-5-20 11:49
可以 的  支持  
问问IAR和KEIL比较 有那个地方比较好吗

个人感觉,KEIL是手动挡汽车,IAR是自动挡汽车,对于驱动调试KEIL更好一点,对于算法之类的调试,IAR更快更方便。
IAR编译速度似乎比KEIL快很多,可以一定程度上节省编译所花费的时间
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

1442

帖子

194

蝴蝶豆

版主

最后登录
2023-10-26
发表于 2018-5-21 13:28:48 | 显示全部楼层
换轿跑 TrueStudio
回复 支持 反对

使用道具 举报

该用户从未签到

40

主题

250

帖子

92

蝴蝶豆

金牌会员

最后登录
2024-4-19
发表于 2018-5-21 16:51:49 | 显示全部楼层
tsuibeyond 发表于 2018-5-21 12:23
个人感觉,KEIL是手动挡汽车,IAR是自动挡汽车,对于驱动调试KEIL更好一点,对于算法之类的调试,IAR更快 ...

大神
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

456

帖子

2

蝴蝶豆

金牌会员

最后登录
2019-5-7
发表于 2018-6-19 05:35:53 | 显示全部楼层
TrueSTUDIO 9.0 下载了,不错,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-20 00:16 , Processed in 1.203129 second(s), 42 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表