12
返回列表 发新帖
楼主: zsltx

[讨论] 怎么避免串口长时间等待应答进入死机状态

[复制链接]
  • TA的每日心情
    奋斗
    2016-12-16 15:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    12

    主题

    61

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2018-1-24
     楼主| 发表于 2017-6-20 18:19:31 | 显示全部楼层
    本帖最后由 zsltx 于 2017-6-20 18:23 编辑
    小恩GG 发表于 2017-6-20 17:14
    楼主你好!
    你说:中断第一次能够发送数据,第二次和第三次发送不出去,如果把此处换成led亮灭,正常
    此 ...

    就是说把lptmr中断服务程序里的串口发送数据函数 query_workcondition();注释掉,换成led亮灭函数K64_LED_Run_Ok_TOGGLE();,中断正常执行,每隔2秒led 亮,在隔2s led灭,这样一直循环2s 亮灭;反过来就只执行一次串口发送数据,然后就不响应中断了,lptmr中断服务程序和回调函数见楼上,其他相关代码如下:
    1.串口发送一帧数据函数 void query_workcondition(void)
    eee.png
    2.串口应答接受函数
    hh.png
    3.main函数部分

    gg.png



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-12-8 10:21
  • 签到天数: 743 天

    [LV.9]以坛为家II

    0

    主题

    1650

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    19069
    最后登录
    2021-5-6
    发表于 2017-6-20 23:42:08 | 显示全部楼层

    ,收藏了,感谢楼主的无私分享
    我又来签到了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20071
    最后登录
    2024-4-29
    发表于 2017-6-21 10:41:33 | 显示全部楼层
    zsltx 发表于 2017-6-20 18:19
    就是说把lptmr中断服务程序里的串口发送数据函数 query_workcondition();注释掉,换成led亮灭函数K64_LED_ ...

    LPTMR中断里面代码实在太长了。
    建议你使用个标志,然后在主程序中判断标志再执行相关串口发送代码。
    中断服务函数只放最精简,最重要的代码。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-12-16 15:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    12

    主题

    61

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2018-1-24
     楼主| 发表于 2017-6-22 10:48:12 | 显示全部楼层
    小恩GG 发表于 2017-6-21 10:41
    LPTMR中断里面代码实在太长了。
    建议你使用个标志,然后在主程序中判断标志再执行相关串口发送代码。
    中 ...

    主要是我一调用数据发送函数后,我紧接着就要调用应答函数,然后就进入等待应答接受状态,我该怎么打破这样等待数据状态,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    68

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    213
    最后登录
    2018-10-31
    发表于 2017-6-24 22:29:52 | 显示全部楼层
    MCU1发送数据后开启5秒定时器
    1.若在5秒内收到应答则直接关闭定时器
    2.若5秒后没有收到应答则再次发送数据,重新开启5秒定时器
    3.裸机代码可以利用sysitick中断实现自己的软定时器,软件定时器接口可以带回调函数参数的那种,很简单
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-30 01:47 , Processed in 0.131915 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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