1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言:想起以前用标准库做RTOS的时候一大堆操作就很烦,还好MX支持了直接配置生成RTOS工程很方便,最近发现一些很久以前买的模块没用上放着占地方然后顺便拿出来做了个小遥控器玩玩,下面给遥控器配个RTOS跑跑。
软件: STM32CubeMX V5.3.0 固件库版本: STM32Cube FW_F1 V1.8.0 硬件: STM32F103C8T6 0.96寸IIC接口OLED 双通道遥感电位器 正文: 1、接着用上次配的工程,打开RTOS,配置内核时钟 配置时基产生定时器 HAL库函数如CAN通讯用的是HAL_IncTick(),而HAL_IncTick()是CubeMX的TimeBase配置的,这个时候如果需要实时响应,则TimeBase最好为最高优先级0,即根据CubeMX推荐的设置TimeBase为TIM1提供。而原先裸机的HAL系统时钟用的Systick,现在Systick用到FreeRTOS上的调度,所以要求Systick为最低优先级15,这样可以保证systick不会对进程造成影响,仅存在延时。而消除延时的手段并不是提高systick的优先级,而是让中断服务程序更快。 2、配置Config parameters,这里大部分是默认参数,然后因为后面要开三个任务,默认堆栈大小不够,修改了一个总堆栈大小 关于里面参数的相关含义这里有一篇介绍得很好的文章https://blog.csdn.net/zhzht19861011/article/details/50134883 现在把部分重要的参数整理成表格如下:
4、在TaskAndQueues任务列表中添加自己的任务任务及队列的配置。 TaskName是任务名称,一个字符串而已。下面是优先级配置,再往下是任务堆栈大小。EntryFunction是任务函数名。CodeGenerationOption是选择自动生成代码是否声明成weak。Allocation是配置内存是否动态分配,此处CUbeMX默认动态分配不给更改。 5、生成代码,在freertos.c文件里面可以看到刚刚我们定义函数名字的函数生成了,但是还是空函数,可以自己添加逻辑和算法处理函数。 我们做好逻辑和算法处理函数之后直接在这个文件里面调用即可,main.c文件不需要做其他操作 在main函数里面做完底层初始化之后就开始初始化RTOS,然后开启任务调度,这就实现了一个多线程的过程。 这里分别设置了三个线程,OLED显示刷新、LED闪烁、ADC数据处理。 |
|||
|
|||
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:11 , Processed in 1.112647 second(s), Total 79, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号