求助:关于复用重映射AFIO_MAPR寄存器设置问题

[复制链接]
9956|17
 楼主| wufei608 发表于 2012-5-6 00:27 | 显示全部楼层 |阅读模式
本人菜鸟,刚入手STM32,用的是库函数3.0版本的。学到GPIO就遇到麻烦了关于设置复用重映射和调试I/O配置寄存器的函数看不懂,我就不贴整个代码了,


#define DBGAFR_SWJCFG_MASK          ((uint32_t)0xF0FFFFFF)

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)

这个函数里面总有一段代码如下:
tmpreg |= ~DBGAFR_SWJCFG_MASK;
…………省略N行…………
AFIO->MAPR = tmpreg;

也就是说把MPAR寄存器的24~27位置为1;为什么要把这四位置1呀……



未命名.jpg

三位置1,这里说禁用是什么意思?

我实在整不明白才会发帖的,网上也没对这个函数的讲解, 所以大神们帮帮我吧,小弟感激不尽……
logokfu 发表于 2012-5-6 09:03 | 显示全部楼层
三位置1就属于其他组合,你就无法使用JTAG功能了。
airwill 发表于 2012-5-6 09:16 | 显示全部楼层
tmpreg |= ~DBGAFR_SWJCFG_MASK;

软件都是通过这种方式来屏蔽不相干位, 以免对寄存器中的其他位产生影响
 楼主| wufei608 发表于 2012-5-6 15:13 | 显示全部楼层
2# **kfu
100关闭JTAG-DP,关闭SW-DP和111禁用有什么区别了??
logokfu 发表于 2012-5-6 16:01 | 显示全部楼层
楼主的手册是中文版的,并且应该不是最新版本的吧。最新版的应该是这个。
10.jpg

最新版手册对这几位是这么描述的。你也可以对照下英文原版的看下。另外这个我也没有实际验证过。根据手册说的的三位同时置1的话是没有影响(no effect) 楼主可以自己实际验证下是最好不过了。

effect.jpg

e.jpg
logokfu 发表于 2012-5-6 16:02 | 显示全部楼层
另外既然楼主是刚学STM32不如直接使用最新的固件库 3.5版本的。不要再用老版本的了。
 楼主| wufei608 发表于 2012-5-6 16:36 | 显示全部楼层
5# **kfu
呵呵,谢谢你的解答,刚去试了下,分别写了100和111,写了100就关闭了JTAG,连程序都下不进去了,而写111是没有影响。
谢谢你了:lol。 嗯,谢谢你的提醒,去下个3.5版本的。
logokfu 发表于 2012-5-6 16:46 | 显示全部楼层
5# **kfu
呵呵,谢谢你的解答,刚去试了下,分别写了100和111,写了100就关闭了JTAG,连程序都下不进去了,而写111是没有影响。
谢谢你了:lol。 嗯,谢谢你的提醒,去下个3.5版本的。 ...
wufei608 发表于 2012-5-6 16:36

关闭了也不要紧,可以再写一个程序开启JTAG然后用串口ISP下载进去就好了。
威威猫 发表于 2014-3-31 20:33 | 显示全部楼层
**kfu 发表于 2012-5-6 16:46
关闭了也不要紧,可以再写一个程序开启JTAG然后用串口ISP下载进去就好了。 ...

我想请教你一个问题,关于STM32中我把SW-JTAG和SW-DP都关闭了
AFIO->MAPR&=0XF8FFFFFF;
AFIO->MAPR|=0x0C000000;
然后仿真器与板儿就连接不上了,把上面程序改写复位后,也连接不上,总是出现 QQ图片20140331203030.jpg QQ图片20140331203047.jpg
想知道怎么才能再连接上?谢谢,不胜感激
myxiaonia 发表于 2014-4-2 12:26 | 显示全部楼层
威威猫 发表于 2014-3-31 20:33
我想请教你一个问题,关于STM32中我把SW-JTAG和SW-DP都关闭了
AFIO->MAPR&=0XF8FFFFFF;
AFIO->MAPR|=0x0C ...

刚好我之前也遇上这个问题,因为程序内部设置时钟的锁相环需要几十ms以上,你可以在这个时间内连上jtag并且删除程序,祝好运
威威猫 发表于 2014-4-3 10:21 | 显示全部楼层
myxiaonia 发表于 2014-4-2 12:26
刚好我之前也遇上这个问题,因为程序内部设置时钟的锁相环需要几十ms以上,你可以在这个时间内连上jtag并 ...

我已经解决了,谢谢
myxiaonia 发表于 2014-4-3 10:26 | 显示全部楼层
威威猫 发表于 2014-4-3 10:21
我已经解决了,谢谢

用的什么方法?
威威猫 发表于 2014-4-3 14:05 | 显示全部楼层
myxiaonia 发表于 2014-4-3 10:26
用的什么方法?

在SW-JTAG和SW-DP都关闭的情况下,程序是下载不进去的,将BOOT0上拉,然后再上电后,下载程序,之后再把BOOT0下拉,就可以用了
myxiaonia 发表于 2014-4-4 07:42 | 显示全部楼层
威威猫 发表于 2014-4-3 14:05
在SW-JTAG和SW-DP都关闭的情况下,程序是下载不进去的,将BOOT0上拉,然后再上电后,下载程序,之后再把B ...

不错的思路,我的板上这些都已经焊死了,我就用上电那么点功夫搞定的
FAQ 发表于 2014-4-4 08:37 来自手机 | 显示全部楼层
威威猫 发表于 2014-4-3 14:05
在SW-JTAG和SW-DP都关闭的情况下,程序是下载不进去的,将BOOT0上拉,然后再上电后,下载程序,之后再把B ...

你是用串口ISP的吧
威威猫 发表于 2014-4-4 14:30 | 显示全部楼层
myxiaonia 发表于 2014-4-4 07:42
不错的思路,我的板上这些都已经焊死了,我就用上电那么点功夫搞定的

因为AD采样数值最大最小差了10个数,精度严重偏低,我就把AD供电电源VDDA3.3v的电压接了个电容再接地,结果仿真器烧了,芯片也烧了,o(︶︿︶)o 唉
myxiaonia 发表于 2014-4-5 21:10 | 显示全部楼层
威威猫 发表于 2014-4-4 14:30
因为AD采样数值最大最小差了10个数,精度严重偏低,我就把AD供电电源VDDA3.3v的电压接了个电容再接地,结 ...

小心为妙啊呵呵
controle 发表于 2014-6-23 14:43 | 显示全部楼层
你们都用的啥板子  我这板子没有 boot0啊 出现问题一样 我怎么处理啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部