8442|17

259

帖子

5

TA的资源

一粒金砂(高级)

楼主
 

在RTX中释放PB3为GPIO使用的一些疑问 [复制链接]

 
本帖最后由 Tobey 于 2016-12-9 11:12 编辑

       前几天在STM32F103上将PB3作为普通IO使用在裸奔程序中运行一切正常,代码如下:
  1. __HAL_RCC_AFIO_CLK_ENABLE();
  2. __HAL_AFIO_REMAP_SWJ_NOJTAG(); //关闭JTAG调试
  3. DBGMCU->CR  &= ~((uint32_t)1<<5); //关闭跟踪功能
复制代码


PB3引脚及相关寄存器配置截图:
(详见参考手册STM32Fxx Reference manual.pdf ,AF remap and debug I/O configuration register (AFIO_MAPR), Debug support(DBG) )



根据参考手册,关闭JTAG及异步跟踪后,PB3将被完全释放,所以在裸奔下运行并没有出现什么问题,

昨天将程序移植到RTX操作系统后出现了新问题:异步跟踪一旦被关闭,则RTX无法启动,运行状态如下:


然而,在RTX手册中并没有找到与此现象相关的描述~~

尝试了不少偏方均以失败告终,,于是依据文档,既然关闭跟踪后RTX无法使用,那么我就继续启用,不过这回将配置跟踪引脚的TRANCE_MODE[1:0]改改,不使用00就行(00占用PB3),于是将DBGMCU_CR的配置稍作修改,测试后发现这回RTX可以正常运行了~~

只要将上面DBGMCU->CR  &= ~((uint32_t)1<<5);这行修改为   DBGMCU->CR  |= ((uint32_t)1<<6); 或 DBGMCU->CR  |= ((uint32_t)1<<7); 即:
  1. __HAL_RCC_AFIO_CLK_ENABLE();
  2. __HAL_AFIO_REMAP_SWJ_NOJTAG(); //关闭JTAG调试
  3. DBGMCU->CR |= ((uint32_t)1<<6); //同步跟踪(不使用PB3引脚)
  4. //DBGMCU->CR |= ((uint32_t)1<<7); //同步跟踪(不使用PB3引脚)
复制代码


那么,我的疑问在于RTX与跟踪配置有什么关系?为什么关闭跟踪功能后RTX无法启动?
原本以为是RTX任务调度之类的可能需要跟踪功能,不过看了配置之后又觉得不合理,,
当TRANCE_MODE[1:0]修改后,跟踪引脚修改为STM32F103中不存在的引脚PE[6:2],跟踪功能无法实现,按理与关闭跟踪的效果应该是一样的才对~~
各位大侠有遇到过上述问题吗?



最新回复

好的,谢谢,果然分享最快乐了。O(∩_∩)O哈哈~  详情 回复 发表于 2016-12-16 18:26
点赞 关注

回复
举报

4177

帖子

9

TA的资源

五彩晶圆(高级)

沙发
 
本帖最后由 huaiqiao 于 2016-12-9 15:21 编辑

RTX系统还没用过。不好意思,问下你如下这个界面是来自哪里?  我看安福来的那个资料中,就有RTX。如果你有好的资料,也分享点,后面我忙完这段时间,也玩玩。


我有几点表达下,不合理之处,还请指正:1、 你应该用到的是F1用户手册中的《MCU调试模块(MCUDBG) 》这个章节中的“对跟踪脚分配的控制 ”这个功能吧?
不知道你为何要这样用。
但是我看用户手册中,如下这个地方如这个异步模式有规定,



2、我看你用的是Cube库吧。不过看你__HAL_AFIO_REMAP_SWJ_NOJTAG();
这个函数已经关闭debug了,但是需要再仔细考究下。
因为相比标准外设库的GPIO_PinRemapConfig这个函数,这个地方到底关闭的哪个需要留意下。(我个人更熟悉标准外设库一些)。会不会跟你提到的“关闭跟踪功能后RTX无法启动”有关系,这个函数,你要多考究下。我记得标准外设库的那个参数,是填入的参数不一样,(如可填入的参数GPIO_Remap_SWJ_NoJTRST/GPIO_Remap_SWJ_JTAGDisable/ GPIO_Remap_SWJ_Disable),这三个参数不同,关闭的也不同。所以__HAL_AFIO_REMAP_SWJ_NOJTAG();你再好好考究下。

你的如下这个地方的写法,我觉得不够严谨。
  1. <div class="blockcode"><blockquote>DBGMCU->CR |= ((uint32_t)1<<6); //同步跟踪(不使用PB3引脚)
  2. DBGMCU->CR |= ((uint32_t)1<<7); //同步跟踪(不使用PB3引脚)
复制代码


这个寄存器的为,看起来你在做置位操作,对吧。 我个人的建议是,在做置位操作之前,建议先对该位做下清零。即先清零后置位。因为我也不知道这个寄存器是之前的状态是什么。
例如:(我写的应该是对的)
  1. DBGMCU->CR &=(uint32_t) (~(1<<6));
复制代码


3、需要提醒一点,
  1. DBGMCU->CR |= ((uint32_t)1<<6); //同步跟踪(不使用PB3引脚)
  2. DBGMCU->CR |= ((uint32_t)1<<7); //同步跟踪(不使用PB3引脚)
复制代码
如上这两种方式,数据长度不一样。不知道对你的后面的操作有没有影响。


点评

RTX相关资源通过审核了,上传的两个压缩包是一样的,,,不知道怎么删,,你可以下载看看,我这与RTX相关的资料就那些了,,,  详情 回复 发表于 2016-12-12 11:35
非常感谢你的回复!你说的那个资料我也看过,不过由于我使用HAL库进行开发,有不少区别,主要看的资料基本就是RTX自带的开发手册,不过有几个不同的版本,回头上传个打包文件吧,任务调试界面是在keil调试界面下打  详情 回复 发表于 2016-12-9 19:33

赞赏

1

查看全部赞赏

 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

板凳
 
huaiqiao 发表于 2016-12-9 15:16
RTX系统还没用过。不好意思,问下你如下这个界面是来自哪里?  我看安福来的那个资料中,就有RTX。如果你有 ...


非常感谢你的回复!你说的那个资料我也看过,不过由于我使用HAL库进行开发,有不少区别,主要看的资料基本就是RTX自带的开发手册,不过有几个不同的版本,回头上传个打包文件吧,任务调试界面是在keil调试界面下打开的,记得启用周期更新窗口,否则任务调度无法动态显示,如下图所示:



1、我并不是有意使用这个功能的,只是为了使PB3作为普通IO口使用,对其进行了配置,,
一开始我是根据手册关闭JTAG,采用串行调试接口进行调试,不过PB3仍然无法使用~~
于是上网查阅,看到有网友说可能是由于D版Keil或者JLINK的原因出现了BUG,使得STM32打开了异步跟踪,占用PB3,将异步跟踪关掉PB3就可以正常使用,于是关闭跟踪功能,此时在裸奔程序PB3可作为GPIO操作,但是RTX操作系统无法正常运行,尝试过启动RTX延迟3s再关闭跟踪功能,发现3s内RTX运行正常,关闭跟踪功能后程序再次死机,
换了几种方法,最后采样上述方式进行测试,发现RTX可以正常运行了,,

2、HAL库函数的对应关系我看过了,相关调试函数对应关系如下:
函数:                                              SWJ_CFG[2:0]:                  作用:
__HAL_AFIO_REMAP_SWJ_ENABLE():            000:                     Full SWJ (JTAG-DP + SW-DP): Reset State
__HAL_AFIO_REMAP_SWJ_NONJTRST():       001:                     Full SWJ (JTAG-DP + SW-DP) but without NJTRST
__HAL_AFIO_REMAP_SWJ_NOJTAG():           010:                     JTAG-DP Disabled and SW-DP Enabled
__HAL_AFIO_REMAP_SWJ_DISABLE():          100:                     JTAG-DP Disabled and SW-DP Disabled

多谢提醒!置位操作确实不严谨,昨天开始就一直被这个问题困扰,所以在测试时就不怎么关注这些了,,,结合两步运算就是下面的代码了,
  1. DBGMCU->CR =(DBGMCU->CR & ~((uint32_t)1<<6)) | ((uint32_t)1 << 6);
复制代码


3、贴出来的这两行是用于修改引脚配置的,我把第二行注释了~~意思是这两行任意一行都可以使RTX正常运行,,,


点评

1、看了你发的PA13|PA14|PA15|PB3|PB4这个引脚功能图 [attachimg]271027[/attachimg] 如下是我对这个函数功能的理解: __HAL_AFIO_REMAP_SWJ_ENABLE(): 000: Full SWJ  详情 回复 发表于 2016-12-9 22:19
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

4
 
Tobey 发表于 2016-12-9 19:33
非常感谢你的回复!你说的那个资料我也看过,不过由于我使用HAL库进行开发,有不少区别,主要看的资料 ...


1、看了你发的PA13|PA14|PA15|PB3|PB4这个引脚功能图



如下是我对这个函数功能的理解:


__HAL_AFIO_REMAP_SWJ_ENABLE():            000:                     Full SWJ (JTAG-DP + SW-DP): Reset State
-->此时PA13|PA14|PA15|PB3|PB4都可作为调试端口

__HAL_AFIO_REMAP_SWJ_NONJTRST():       001:                     Full SWJ (JTAG-DP + SW-DP) but without NJTRST
-->此时除了PB4,PA13|PA14|PA15|PB3作为调试端口,PB4应该是普通io

__HAL_AFIO_REMAP_SWJ_NOJTAG():           010:                     JTAG-DP Disabled and SW-DP Enabled -->此时PA13|PA14|作为调试端口,而PA15,PB3,PB4作为普通io

__HAL_AFIO_REMAP_SWJ_DISABLE():          100:                     JTAG-DP Disabled and SW-DP Disable
--> 此时PA13|PA14|PA15|PB3|PB4均为普通io


而你使用的__HAL_AFIO_REMAP_SWJ_NOJTAG();  看起来是PB3是普通IO,这个在裸机下是么有问题的;

你再回头看上面的这个引脚功能的图,你在RTX系统下,估计用的是SW即PA13,PA14作为调试引脚的吧?

而且根据引脚图的描述,PB3在使用SW debug port的时候,下面有异步跟踪时PB3为TRACESWO 信号。我想这个应该与你的问题的发生有关系了。这个TRACESWO 信号 我也没有碰到过,这个需要你自己理解,我在这里点出来。





2、期待你分享RTX的相关资料,或者介绍的比较详细一点的帖子。让我门好上手。O(∩_∩)O哈哈~,或者你发我邮箱我也不介意哈。O(∩_∩)O哈哈哈~








点评

1、按照手册来看,这几个函数的功能就是你理解的那样,在裸机下与RTX系统下,我都是使用SW调试,仅占用PA13、PA14,使用__HAL_AFIO_REMAP_SWJ_NOJTAG()函数后,PB3仍然被异步跟踪功能占用,因此还需要关闭跟踪功能,  详情 回复 发表于 2016-12-10 09:06
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

5
 
huaiqiao 发表于 2016-12-9 22:19
1、看了你发的PA13|PA14|PA15|PB3|PB4这个引脚功能图



如下是我对这个函数功能的理解:


__H ...

1、按照手册来看,这几个函数的功能就是你理解的那样,在裸机下与RTX系统下,我都是使用SW调试,仅占用PA13、PA14,使用__HAL_AFIO_REMAP_SWJ_NOJTAG()函数后,PB3仍然被异步跟踪功能占用,因此还需要关闭跟踪功能,即将DBGMCU_CR中的TRACE_IOEN位置为0(DBGMCU->CR  &= ~((uint32_t)1<<5); )(这部分代码在本帖的首部已经给出了)
此时,在裸机情况下PB3可以正常使用,不过在RTX下系统无法正常运行(设置PWM占空比测试后发现PB3已经作为普通IO口了,不过任务无法执行),只能通过修改跟踪模式的方式才能使RTX系统正常运行,即修改TRACE_MODE[1:0],使其不再是“00”就行。
其实板子改板后就不使用PB3了,,只是无法理解,RTX并不占用PB3,为什么会出现这种情况

2、资料昨天上传了,不过貌似没通过审核,,我再试试不行就给你发邮箱吧
帖子的话我觉得下面这个挺好的,不过不是关于如何使用RTX,如何使用RTX我觉得就看官方手册就行了,挺容易理解的(结合keil安装目录下的demo看)
RTX 学习笔记


点评

1、针对你的这个问题,确实是个比较难想通的问题。不知道你对我上面回复的“异步跟踪时PB3为TRACESWO 信号”,这个TRACESWO 信号怎么看。 还有,我有必要提醒你一下,你这个CPU硬件电路一定要设计正确哦。之前  详情 回复 发表于 2016-12-10 13:46
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

6
 
Tobey 发表于 2016-12-10 09:06
1、按照手册来看,这几个函数的功能就是你理解的那样,在裸机下与RTX系统下,我都是使用SW调试,仅占用PA ...

1、针对你的这个问题,确实是个比较难想通的问题。不知道你对我上面回复的“异步跟踪时PB3为TRACESWO 信号”,这个TRACESWO 信号怎么看。
    还有,我有必要提醒你一下,你这个CPU硬件电路一定要设计正确哦。之前我有碰到过经验主义的问题,你可以看下我那个VCAP引脚电压异常引出的问题的帖子中的说明。总之不要走经验主义和抄袭主义,具体cpu,我们硬件设计一定要参考datasheet等资料,具体设计。
2、阿莫我没账号。你说怎么使用RTX,看官方手册。这个还得麻烦你,稍稍说明,怎么下载。然后需要移植还是啥的。稍微请求你一下,说明下。我有空一定要玩玩。

点评

RTX的使用我写了个帖子简单的介绍了下,有什么问题再探讨吧 https://bbs.eeworld.com.cn/thread-508895-1-1.html  详情 回复 发表于 2016-12-16 18:04
1、这个信号是调试时使用的,具体的我还不大清楚,下面贴的是《contex-me 权威指南》上的截图,,电路设计这块正如你所说,对于电路设计,我现在还属于入门级,目前都是参考手册以及上网查阅相关原理图别人是怎么画  详情 回复 发表于 2016-12-12 09:26
 
 
 

回复

750

帖子

3

TA的资源

版主

7
 
不可以把io配置成其他模式吗?
为什么要去关闭调试寄存器。没有看过RTX的核心源码,不能排除某些os利用调试组件实现特殊功能

点评

因为手册上说关闭调试功能可以释放PB3作为普通IO口,,嗯,抽空研究研究源码看看  详情 回复 发表于 2016-12-12 09:51
 
个人签名

要666

 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

8
 
huaiqiao 发表于 2016-12-10 13:46
1、针对你的这个问题,确实是个比较难想通的问题。不知道你对我上面回复的“异步跟踪时PB3为TRACESWO 信 ...

1、这个信号是调试时使用的,具体的我还不大清楚,下面贴的是《contex-me 权威指南》上的截图,,电路设计这块正如你所说,对于电路设计,我现在还属于入门级,目前都是参考手册以及上网查阅相关原理图别人是怎么画的进行参照,,,
2、这几天需要给块板子添加网卡驱动,大概得过几天

点评

嗯嗯, 你这个再看看这个TRACESWO 信号。 今天白天一直在忙,没顾得上回复你的帖子,不好意思。 还有,你说的资料通过审核了。是说丢在了阿莫上还是ee的下载中心啊。阿莫我没有账号的。。。。。  详情 回复 发表于 2016-12-12 21:26
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

9
 
le062 发表于 2016-12-11 12:01
不可以把io配置成其他模式吗?
为什么要去关闭调试寄存器。没有看过RTX的核心源码,不能排除某些os利用调 ...

因为手册上说关闭调试功能可以释放PB3作为普通IO口,,嗯,抽空研究研究源码看看
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

10
 
huaiqiao 发表于 2016-12-9 15:16
RTX系统还没用过。不好意思,问下你如下这个界面是来自哪里?  我看安福来的那个资料中,就有RTX。如果你有 ...

RTX相关资源通过审核了,上传的两个压缩包是一样的,,,不知道怎么删,,你可以下载看看,我这与RTX相关的资料就那些了,,,
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

11
 
Tobey 发表于 2016-12-12 09:26
1、这个信号是调试时使用的,具体的我还不大清楚,下面贴的是《contex-me 权威指南》上的截图,,电路设 ...

嗯嗯, 你这个再看看这个TRACESWO 信号。
今天白天一直在忙,没顾得上回复你的帖子,不好意思。
还有,你说的资料通过审核了。是说丢在了阿莫上还是ee的下载中心啊。阿莫我没有账号的。。。。。

点评

在ee的下载中心  详情 回复 发表于 2016-12-13 08:44
 
 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

12
 
huaiqiao 发表于 2016-12-12 21:26
嗯嗯, 你这个再看看这个TRACESWO 信号。
今天白天一直在忙,没顾得上回复你的帖子,不好意思。
还有, ...

在ee的下载中心

点评

你上传文档的链接还在么?能不能帮忙发一下。劳驾哈。。。  详情 回复 发表于 2016-12-13 09:40
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

13
 

你上传文档的链接还在么?能不能帮忙发一下。劳驾哈。。。

点评

https://download.eeworld.com.cn/user/Tobey  详情 回复 发表于 2016-12-13 09:58
 
 
 

回复

2万

帖子

71

TA的资源

管理员

14
 
huaiqiao 发表于 2016-12-13 09:40
你上传文档的链接还在么?能不能帮忙发一下。劳驾哈。。。

https://download.eeworld.com.cn/user/Tobey  
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

想不到soso姐,居然关注我的回复,感谢了哈。 最近比较忙。。。。一堆板子。。。。 我晚上下载哈。。。。偷着回几个帖子。。。。  详情 回复 发表于 2016-12-13 14:53
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

15
 
soso 发表于 2016-12-13 09:58
https://download.eeworld.com.cn/user/Tobey

想不到soso姐,居然关注我的回复,感谢了哈。
最近比较忙。。。。一堆板子。。。。
我晚上下载哈。。。。偷着回几个帖子。。。。
 
 
 

回复

2万

帖子

71

TA的资源

管理员

16
 
huaiqiao 发表于 2016-12-13 14:53
想不到soso姐,居然关注我的回复,感谢了哈。
最近比较忙。。。。一堆板子。。。。
我晚上下载哈。。。 ...

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

259

帖子

5

TA的资源

一粒金砂(高级)

17
 
huaiqiao 发表于 2016-12-10 13:46
1、针对你的这个问题,确实是个比较难想通的问题。不知道你对我上面回复的“异步跟踪时PB3为TRACESWO 信 ...

RTX的使用我写了个帖子简单的介绍了下,有什么问题再探讨吧
https://bbs.eeworld.com.cn/thread-508895-1-1.html

点评

好的,谢谢,果然分享最快乐了。O(∩_∩)O哈哈~  详情 回复 发表于 2016-12-16 18:26
 
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

18
 
Tobey 发表于 2016-12-16 18:04
RTX的使用我写了个帖子简单的介绍了下,有什么问题再探讨吧
https://bbs.eeworld.com.cn/thread-508895-1 ...

好的,谢谢,果然分享最快乐了。O(∩_∩)O哈哈~
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表