嵌入式技术论坛
直播中

ss

8年用户 8762经验值
擅长:电源/新能源 制造/封装 RF/无线
私信 关注
[问答]

修改rt_kprintf()函数成为中断方式需要注意什么地方

使用rt-thread-0.2.4版本,在MDK上软件仿真调试STM32F101RB。 初始化USART2工作在中断发送方式,使用消息队列方式传递发送字符,中断中自动完成消息队列中字符发送。软件调试成功。
问题:
1. 我想修改rt_kprintf()函数也采用消息队列传递发送字符,USART1也采用中断方式发送。但是在只要使能调用USART_ITConfig(USART1, USART_IT_TXE, ENABLE);使能USART1的发送缓冲空中断使能,程序稍后老是执行void rt_hw_uart_rx_int(int irqno)函数(在board.c文件中),程序并没有跑飞,而是退出此函数马上又进入此函数重复执行。

修改rt_kprintf()函数成为中断方式需要注意什么地方,怎么修改?

回帖(5)

ss

2022-3-18 09:27:51
补充说明,
1.我已经在消息队列初始化之前不再调用打印函数;rt_kprintf()函数已经在用户任务里面调用了。( show version 函数移到用户任务里面了)
2. USART1的发送消息是送入字符消息进入DR寄存器以后,再打开缓冲区非空中断的。
举报

ss

2022-3-18 09:28:09
RTT-0.2.4那会貌似还没有支持CM3的...
建议使用SVN里面的版本,0.3.*
另外,有发现的BUG也是及时在这里修正,大家可以很好的同步,好交流

另外,MDK软仿STM32的串口,工作在中断发送方式下,是会重复进入串口中断,(我当时也郁闷了好久)
查看所有的寄存器,没有哪个中断被触发,同样的程序下到硬件则正常
从你的描述上看,应该是同一问题

为何不用硬件测试? 软仿测试一下算法还行,和硬件相关的还是真刀真枪好些
举报

ss

2022-3-18 09:31:19
件仿真是因为手头没有开发板等硬件。我做软件仿真为了评估某些硬件设计方案的可行性,和某些技术解决方案的可行性,只好采用MDK的软件仿真评估一下!

我跟踪了一下软件仿真USART1,MDK中查看相关寄存器都产生了中断,就是不跳到中断服务程序去,原因不明。软件仿真USART2一切都正常!

本周买一个STM32的开发板回来,实际测测!我准备在项目中使用STM32和RT-Thread了。
举报

ss

2022-3-18 09:31:46
连硬件芯片本身都会有BUG,软仿软件就更多了
保证指令级别的不出错就行了

串口,定时器这些都是硬件的,不正常也不能怪仿真软件.
举报

ss

2022-3-18 09:31:55
mdk软仿确实很方便
但软仿本身有问题确实很让人头疼
在LS3M的串口软仿,也发现中断问题,初始化后就进中断一次,下到硬件就正常
另外把32位定时器拆成2个16位定时器用的时候,软仿不会触发中断,下到硬件也正常
举报

更多回帖

发帖
×
20
完善资料,
赚取积分