- 博客(13)
- 收藏
- 关注
原创 在RT-Thread中使用segger RTT调试中断
最近在调试RT-Thread的中断功能。一般调试中断功能都是用IO口去测试的,不能用打印,特别是rt_kprintf()的方式去调试。原因很简单,因为rt_kprintf()的发送是阻塞型的,会占用大量的时间。中断功能最忌讳的就是占用时间太长。最近调试发现,对于常用的STM32来说,有一个不占用时间的打印,那就是:segger RTT。Segger RTT的说明和原理看看下图:别人说可以,那么就要亲自试试。首先是引入segger RTT。对于RT-Thread来说,引入segger RTT
2022-02-19 18:09:44
1187
原创 art-pi smart ADC驱动移植
art-pi smart 里并没有实现ADC驱动,然而我自己又很需要使用ADC,所以只能自己补一个ADC驱动了。主体程序都是仿照drv_pwm写的。大佬说,驱动可以搬imxrt里面的,所以我就借用了rt-thread里的两个关键文件:fsl_adc.c和fsl_adc.h。具体目录参考图片。怎么去理解fsl_xxx文件呢?类比的话就是STM32的HAL库的文件。另外还有drv_adc.c和drv_adc.h也是搬过来的。当然,换了MCU了,函数名字还是需要改改的。放出源码,还有很多需要改
2022-01-27 20:08:00
412
原创 rt-smart 体验C++ 11/14编程
rt-smart 体验C++ 11/14编程有一天,大佬在群里问:“有人可以在smart上试试C++编程么”我就想写个简单的C++的COUT打印试试。结果大佬后面又加了要求,要“使用C++ 11/14的高级特性”好了,简单的COUT不够用了。那么就百度一份C++ 11/14特性的文章。找到这份:C++11/C++14新特性选用了其中一个例子:lambda表达式。为了节约时间,直接复制在userapps/apps里,挑一个apps复制,粘贴一份。然后修改一下名字。把C文件里的内容替换成上
2022-01-26 15:12:57
1088
原创 rt-thread studio 快速复制项目的方法
rt-thread studio把所有项目都放一起,统一管理了。这样的结果就是整个studio里,不能有两个同名的项目。但是,有时候想复制一份出来,做点修改测试的。这时候有一个快速的复制项目的方法。1,在windows里复制你想复制的项目,假设叫yuan,然后粘贴,然后改一个名字,假设叫xin。2,打开xin目录里的.project文件修改两个叫yuan的地方。3,打开.cproject文件,修改接近最后的一个地方4,打开studio,文件,导入,选择xin目录,就可以看到xin的项目了!
2021-09-04 21:41:10
797
1
原创 rt-thread中的PWM应用
rt-thread中的PWM在stm32单片机上的应用1. RT_USING_PWM要用PWM的device,首先就需要在rtconfig.h中定义RT_USING_PWM这个宏,很简单,配置里勾勾就实现了。2. BSP_USING_PWM1然后在board.h里看到这段相关代码:/*-------------------------- PWM CONFIG BEGIN --------------------------*//** if you want to use pwm you can
2021-01-17 17:30:29
1004
1
原创 RT-Thread中使用RTT调试
RT-Thread中使用Jlink的RTT调试RT-Thread中的finsh命令非常实用,但是一般都会占用掉了一个串口。或者有时候手边没有串口线时,就不方便调试了。由于我用的时jlink烧录器,之前使用调试工具-RTT来代替串口进行信息的交互和调试。所以我就想,能否用RTT来替代串口,运行finsh命令。RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。具体详情自选查找。下面说一下步骤
2020-12-27 17:22:01
6043
4
原创 __weak与函数指针的使用与见解
__weak与函数指针的使用与见解__weak是什么?函数名称前面加上__weak 修饰符,我们一般称这个函数为“弱函数”。加上了__weak 修饰符的函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。例如:__weak void Callback (void){}函数指针是什么函数指针是指向函数的指针变量。例如:void (*Func) (void)
2020-12-22 11:05:24
861
原创 STM32F0系列UART错误中断问题
STM32F0系列重写的UART相关代码。在新的UART里,容易发出的错误是FE错误和ORE错误。FE的解释如下:FE: 帧错误当一个不同步现象、 强噪声或一个断开符号被检测到的时候, 这个位有硬件置 1。由软件向 USART_ICR 寄存器的 FECF 位写 1, 可以清除这个标志。 在智能卡模式中发送数据时, 当重发尝试的次数达到上限, 由没有收到成功的回应(卡一直响应NACK) 的时候, 这个位也会被硬件置 1。如果 USART_CR1 寄存器中的 EIE 位是 1, 会产生中断请求。
2020-07-16 22:02:53
3990
原创 STM32 HAL_LOCK问题
STM32 HAL_LOCK问题STM32 HAL_LOCK问题在使用STM32的HAL库开发时候,在使用UART和CAN的使用,偶尔会碰到突然不再接收数据的情况.调试发现,信号有的,但是就是软件不再进入接收中断了.通过调试,最后定位到问题点在于__HAL_LOCK()这个函数里.以下用uart为例子,剖析这个问题.典型的uart接收数据例子uart配置后,最后调用一下 HAL_UAR...
2020-04-18 14:20:41
7096
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人