你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

F103RCT6芯片对AFIO->MAPR寄存器写入时出错

[复制链接]
luo__ 提问时间:2025-3-31 10:08 / 未解决

/IO初始化/

RCC->APB2ENR |= 0x0000001D; //使能GPIOA、GPIOB、GPIOC和AFIO

AFIO->MAPR &= 0xF8FFFFFB;

AFIO->MAPR |= 0x02000000; //开启SW-DP,关闭JTAG-DP

AFIO->MAPR |= 0x00000004; //USART1映射至PB6、PB7

我的部分代码如上,主要功能是对SW-DP和USART1进行重映射,但是在AFIO->MAPR |= 0x01000000;这一句出现了错误。

图片.png

我想要实现启用SW-DP和关闭JTAG-DP,应该写入010,但是写入该行后,却变成了100,如下图:

图片.png

这就导致我的调试窗口直接断开了连接。

而且我用库函数LL_GPIO_AF_Remap_SWJ_NOJTAG();写入时也是一样的情况,其次我写入001时,也会变成010。

但是AFIO->MAPR |= 0x00000004;这行却不会出现类似问题。

所以不知道是怎么回事,想请教一下各位大佬。

收藏 评论4 发布时间:2025-3-31 10:08

举报

4个回答
luo__ 回答时间:前天 13:48

图片.png

luo__ 回答时间:前天 13:52

luo__ 发表于 2025-3-31 13:48
![图片.png](data/attachment/forum/202503/31/134805hod1c0of130231q0.png?imageMogr2/auto-orient/st ...

[md]虽然这个解决了读取值与写入值不一样的问题,但是没有解决为什么写入010,会导致调试退出问题

xmshao 回答时间:前天 14:11
这个问题都被刨出来了。


该寄存器的这3个位是只写的,所以你按照寄存器的定义正确写入即可。
rrr.png 读出来的可能不可靠。
不过,根据我刚才测试来看,按照下面做法似乎可以读。


   Value_Mapr0]= AFIO->MAPR ;
   Value_Mapr1]= AFIO->MAPR ;
   Value_Mapr2]= AFIO->MAPR ;
luo__ 回答时间:前天 17:43

xmshao 发表于 2025-3-31 14:11
这个问题都被刨出来了。</p>
<p>

这三个位确实不可以读,我就算设置的时010,读回来的还是100,好像会左移一位;其次在写入的时候,很容易出错,如果没有按照正确的方式写入,就算写入的是010,也会出现调试断开的情况;

图片.png

代码所示有两种写入方法,写入数据都是一样的,但是如果用注释里面的代码进行写入,就会写入出错,出现调试断开的情况。我百思不得其解,你也可以试一下。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版