OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4347|回复: 4

STM32F103的定时器2部分映射1后的PA15和JTDI冲突,禁用JTAG保留SWD,但是AFIO的MAPR的SWJ_CFG[2:0]='111'???

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-2-28
在线时间
1 小时
发表于 2018-2-28 12:59:42 | 显示全部楼层 |阅读模式
5金钱
STM32F103的定时器2部分映射1后的PA15和JTDI冲突,现在想“JTAG禁用,SWD保留,定时器2复用”。
查看手册如下:

捕获.JPG
所以设置:
/*** 依次开启AFIO/GPIOA/TIM2时钟 ***/
RCC->APB2ENR|=1<<0;
RCC->APB2ENR|=1<<2;
RCC->APB1ENR|=1<<0;
/*** 配置SWJ_CFG[2:0] = '010' ***/
AFIO->MAPR &= ~(1<<26);
AFIO->MAPR |=    (1<<25);
AFIO->MAPR &=~(1<<24);
/*** TIM2_REMAP[9:8] = '01' ***/
AFIO->MAPR&=~(1<<9);
AFIO->MAPR|=(1<<8);
最后,AFIO->MAPR的值为0x02000100。
此时“SWD下载功能被禁用,定时器2复用成功”。并没有得到期望的“JTAG禁用,SWD保留,定时器2复用”。

然而,使用ST提供的函数:
/*** 依次开启AFIO/GPIOA/TIM2时钟 ***/
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/*** 配置JTAG禁用,SWD保留 ***/
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
/*** 定时器2部分重映射1 ***/
GPIO_PinRemapConfig( GPIO_PartialRemap1_TIM2, ENABLE);
最后,AFIO->MAPR的值为0x0F000100。
此时得到了期望的“JTAG禁用,SWD保留,定时器2复用”。

但是 AFIO->MAPR 的值为 0x0F000100 表明 SWJ_CFG[2:0] = '111',手册上写的是“其它组合:无作用”。
新手小白,初入STM32,求各位大大指点,多谢啦~

最佳答案

查看完整内容[请看2#楼]

数组010,肯定就是JTAG关闭,SWD开启了。 你看看最新英文版的手册,看看有没有111定义。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-2-28 12:59:43 | 显示全部楼层
数组010,肯定就是JTAG关闭,SWD开启了。  你看看最新英文版的手册,看看有没有111定义。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-2-28 16:40:10 | 显示全部楼层
RCC->APB2ENR|=1<<2;  你这是开启的GPIOA的时钟,看下是不是这里的问题的
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-2-28
在线时间
1 小时
 楼主| 发表于 2018-3-1 19:02:05 | 显示全部楼层

Thanks&#9834;(&#65381;ω&#65381;)&#65417;
我觉得不是的,我的期望是“JTAG禁用,SWD保留,定时器2复用”,定时器2的部分映射1的通道1映射到了PA15,所以这里开启的GPIOA的时钟。而且AFIO和定时器2的时钟我也开了哇~
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-2-28
在线时间
1 小时
 楼主| 发表于 2018-3-2 08:40:20 | 显示全部楼层
正点原子 发表于 2018-3-2 01:08
数组010,肯定就是JTAG关闭,SWD开启了。  你看看最新英文版的手册,看看有没有111定义。

谢谢原子大神,膜拜~
去官网查了一下,搜索结果如下:
F://1.jpg
F://2.jpg
F://3.jpg
2017年8月的RM上写的也是:
000: Full SWJ (JTAG-DP + SW-DP): Reset State
001: Full SWJ (JTAG-DP + SW-DP) but without NJTRST
010: JTAG-DP Disabled and SW-DP Enabled
100: JTAG-DP Disabled and SW-DP Disabled
Other combinations: no effect
老师最近让做一个板子,其中有一部分运动控制的功能是通过编码器闭环控制4个直流电机的位置和速度,因为4个编码器要用4个定时器(TIM2到TIM5,而且我理解的用编码器功能的定时器的通道3和通道4无法发送PWM了),所以4路PWM用了TIM1和TIM8分别的2路。所用引脚过多引发了上边的定时器2部分映射。现在这部分功能已经实现,虽然我还是没想明白寄存器为什么不是想象的值,但是感谢原子大神,我就先不纠结了~~~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 18:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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