
程序是这样的,在串口中断中对TX口定义成普通输出,并输出低电平,为了满足串口单线收发需求;
我在程序SYS_SET_IOCFG(IOP24CFG,SYS_IOCFG_P24_GPIO);//TXD位置处加入断点,断点仿真是可以发送5个字节全部数据的;
当我不加断点直接仿真连续运行,输出数据就出错了,如上图。有了解这个是什么问题的大神吗?急!!!
共2条
1/1 1 跳转至页
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
2楼
中断优先级:请检查您的中断优先级设置是否正确。如果中断优先级设置不当,可能会导致中断处理不及时,从而影响数据发送。
2. 中断服务程序(ISR):请检查您的中断服务程序是否正确处理了发送数据。确保在中断服务程序中正确地设置了TXD口的状态,并在发送完一个字节后立即发送下一个字节。
3. 串口配置:请检查您的串口配置是否正确,包括波特率、数据位、停止位和校验位等。错误的串口配置可能会导致数据发送不完整。
4. 程序逻辑:请检查您的程序逻辑是否正确。在发送数据之前,确保已经正确地设置了TXD口的状态。同时,检查程序中是否有其他可能导致数据发送不完整的逻辑错误。
5. 硬件问题:如果以上方法都无法解决问题,可能是硬件方面的问题。请检查您的开发板和连接线是否正常工作,以及TXD口是否与其他设备产生干扰。
建议您按照以下步骤进行排查:
1. 检查中断优先级设置。
2. 检查中断服务程序(ISR)是否正确处理发送数据。
3. 检查串口配置是否正确。
4. 检查程序逻辑是否有错误。
5. 如果以上方法都无法解决问题,检查硬件设备和连接线。
串口发送中断只是把数据转移到串口发送缓存器中,数据并没有发出,此时在中断中将TX口设置为普通I/O口,就导致后续数据发送丢失了。
需要理解串口发送数据的过程,数据从数组转移给串口发送缓存寄存器,然后由串口发送缓存寄存器通过I/O发送出去。你的写法犯了个错误,当串口发送中断触发后,正在将最后一字节数据移送到串口发送缓存寄存器,此时串口数据还没发送完,所以就将TX相应I/O口切成普通输出I/O口,导致之前在串口发送缓存寄存器中的一字节数据和刚赋予串口发送缓存寄存器的一字节数据没有成功发送出去。
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 【“龙虾”创意工坊征集令——用XClaw玩出最出乎意料的智能终端】有奖活动~ | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |
我要赚赏金
