硬汉嵌入式论坛

 找回密码
 立即注册
查看: 790|回复: 5
收起左侧

[μCOS-III] STM32F103裸机程序改为UCOS-III以后不能正常工作【已破案,原因为裸机程序改为ucos时增加了功能,增加的功能和通信冲突】

[复制链接]

77

主题

272

回帖

503

积分

金牌会员

积分
503
发表于 2024-9-17 22:32:17 | 显示全部楼层 |阅读模式
本帖最后由 logo 于 2024-9-18 12:04 编辑

我的裸机程序原本工作正常,裸机程序和外部的芯片通信,有比较高的时序要求。通信过程中不能被打断。

裸机程序通信部分一旦开始运行,我就会把所有的中断关闭,比如TIM定时器,systick等等都关掉。一直用的好好的。

现在程序移植到UCOS-III发现通信异常,严重怀疑被UCOS-III打断了。
在通信开始之前我执行OSIntEnter();

通信结束后我执行OSIntExit();

但是通信还是会失败。调试了很久不知道怎么回事儿。


这里我想知道有什么办法在通信开始之前把UCOS-III的中断、任务调度什么的全部都暂时关闭暂停以免影响我的通信,等我通信结束后再开启。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2024-9-18 00:00:15 | 显示全部楼层

开关中断要用这个

        #include "os.h"   

        #define  ENABLE_INT()      CPU_CRITICAL_EXIT()     /* 使能全局中断 */
        #define  DISABLE_INT()     CPU_CRITICAL_ENTER()    /* 禁止全局中断 */
回复

使用道具 举报

77

主题

272

回帖

503

积分

金牌会员

积分
503
 楼主| 发表于 2024-9-18 00:47:17 来自手机 | 显示全部楼层
eric2013 发表于 2024-9-18 00:00
开关中断要用这个

        #include "os.h"   

这个也试过了,不行。不知道哪里和裸机还有有出入。头大,实在没办法,准备晚点上示波器看下波形和裸机的程序对比下看看是哪里出了问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2024-9-18 08:23:27 | 显示全部楼层
logo 发表于 2024-9-18 00:47
这个也试过了,不行。不知道哪里和裸机还有有出入。头大,实在没办法,准备晚点上示波器看下波形和裸机的 ...

看下你的CPU_CRITICAL_EXIT()  源代码是用的basepri还是primask开关的中断。
回复

使用道具 举报

77

主题

272

回帖

503

积分

金牌会员

积分
503
 楼主| 发表于 2024-9-18 11:55:38 | 显示全部楼层
eric2013 发表于 2024-9-18 08:23
看下你的CPU_CRITICAL_EXIT()  源代码是用的basepri还是primask开关的中断。

折腾了一天,已经破案,我的通信采用了DMA通信。裸机程序改为UCOS程序的时候添加了功能,添加的这部分功能也使用了DMA,并且和通信用的DMA使用的是同一个DMA通道。和原来正常的DMA通信起了冲突,最终导致通信失败。删除添加的功能就解决问题了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116225
QQ
发表于 2024-9-18 12:08:09 | 显示全部楼层
logo 发表于 2024-9-18 11:55
折腾了一天,已经破案,我的通信采用了DMA通信。裸机程序改为UCOS程序的时候添加了功能,添加的这部分功 ...

谢谢告知最终问题原因。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 13:45 , Processed in 0.297493 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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