使用stm32cubemx生成rtthreadnano工程的踩的一点坑


一、使用stm32cubemx生成rtthread工程

官方文档已经说的很清楚了,这里就不赘述了:基于 CubeMX 移植 RT-Thread

二、一些小坑

1.finish未添加

在这里插入图片描述
可以看到编译器给我们报错了,这种情况我们需要去打开rtconfig.h文件,有两种方式解决
一是直接取消注释:
在这里插入图片描述
二是使用Use Configuration Wizard in Context Menu:在上下文中使用配
置向导来配置 rtconfig.h 中的宏定义。
在这里插入图片描述
在这里插入图片描述
到此编译就会通过了。


2.重映射rt_kprintf和rt_hw_console_getchar

这个很简单,只需要进入board.c,可以发现官方已经帮我们做好了。
在这里插入图片描述
当然我们不能直接使用,除非官方的UartHandle句柄和cubemx中配置的串口一样,所以我们需要进行一点修改,进入cubemx生成的usart.c,复制里面自动生成的句柄,然后修改程序(让UartHandle绑定我们配置的串口):
在这里插入图片描述
INIT_BOARD_EXPORT是初始化宏,感兴趣可以搜一下。
这时编译一下,成功。
但是当我们下载进开发板,连接串口准备使用的时候,却发现:
在这里插入图片描述
没有msh命令行出现,这是因为cubemx生成的main函数中有while(1);main线程比finish线程优先级高,main一直运行导致finish线程一直没有运行。我们这里把while(1)删除,加入return 0,再烧录。
在这里插入图片描述
大功告成!

2.rt_hw_console_getchar的大坑

在这里插入图片描述
可以看见我们想用ps打印线程却发现只返回了p,这是因为getchar是通过轮询实现的,同时又增加了rtthread_delay(10)挂起自身便于比finish线程低的线程运行,我们可以将delay删除看看效果。
在这里插入图片描述
在这里插入图片描述
可以看见可以了,不过建议还是将轮询改为中断方式比较好。

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值