找回密码
 立即注册
查看: 523|回复: 4

请教大家,如何在Timer内发送串口信息 | 已解决

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-09-17 10:21:00

8

主题

21

回帖

169

积分

注册会员

积分
169
发表于 2024-5-25 21:51:53 | 显示全部楼层 |阅读模式
请教大家,如何在Timer内发送串口信息,有什么需要特殊注意的吗


在Timer1中计数后进行触发发送串口消息,参考了例子程序。但是在main启动过程的Uart2SendStr("Uart Test !\r\n"); 能发送成功,在Timer isr中的Uart2SendStr("TRIGER");发送不成功,而且会把timer的中断卡主,中断停下来了。
大家帮忙看看在Timer里面要发送串口信息应该注意什么。非常感谢大家!

main.c (1.74 KB, 下载次数: 57)

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:577
  • 最近打卡:2025-06-29 10:04:32
已绑定手机

50

主题

1821

回帖

3192

积分

论坛元老

积分
3192
发表于 2024-5-25 22:53:05 | 显示全部楼层
不要在中断中处理太多事务,你可以在定时中断里设置标志位,主程序处理发送
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-09-17 10:21:00

8

主题

21

回帖

169

积分

注册会员

积分
169
发表于 2024-5-26 09:25:22 | 显示全部楼层
jw*** 发表于 2024-5-25 22:53
不要在中断中处理太多事务,你可以在定时中断里设置标志位,主程序处理发送 ...

好的谢谢,在 main的while中发送,这样修改试下
还想知道什么原因在timer的isr里面发送串口消息会直接停住isr的定时,好像一直没有返回当前isr一样
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-5-26 23:32:26 | 显示全部楼层
i_*** 发表于 2024-5-26 09:25
好的谢谢,在 main的while中发送,这样修改试下
还想知道什么原因在timer的isr里面发送串口消息会直接停 ...

串口中断的预设优先级比定时器低
所以串口中断不能打断定时器中断
你在定时器中断内发送串口
发了一个字符后死等busy清零
但busy清零需进入串口中断内运行的
于是busy不能被清零
死循环了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2024-09-17 10:21:00

8

主题

21

回帖

169

积分

注册会员

积分
169
发表于 2024-6-1 10:35:14 | 显示全部楼层
Lkck*** 发表于 2024-5-26 23:32
串口中断的预设优先级比定时器低
所以串口中断不能打断定时器中断
你在定时器中断内发送串口

谢谢提示,按指点在timer里面设置标志,在main的while里面发送串口数据就正常了。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 03:42 , Processed in 0.122908 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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