OpenEdv-开源电子网

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

STM32 引脚重映射问题

[复制链接]

36

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
943
金钱
943
注册时间
2015-11-24
在线时间
162 小时
发表于 2019-3-28 16:13:14 | 显示全部楼层 |阅读模式
10金钱
目标:需要在PA15上输出PWM波

PA15是jtag的jtdi引脚

步骤:
1、__HAL_RCC_AFIO_CLK_ENABLE();  打开AFIO时钟
2、__HAL_AFIO_REMAP_SWJ_NOJTAG();  关闭JTAG,保留SWD ,释放PA15
3、__HAL_AFIO_REMAP_TIM2_PARTIAL_1(); 把TIM2的CH1映射至PA15


以上操作后产生了一个问题:

再次下载不能下载,需要先按住复位才能下载,再次向咨询一下大神,有没有碰到这种情况的,为什么关闭JTAG会导致SWD也不能使用,但是如果我不重映射TIM2就没有问题。

最佳答案

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

static void remap(void) { __HAL_RCC_AFIO_CLK_ENABLE(); volatile uint32_t map_copy = AFIO->MAPR; map_copy &= ~((7
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
943
金钱
943
注册时间
2015-11-24
在线时间
162 小时
 楼主| 发表于 2019-3-28 16:13:15 | 显示全部楼层
csmjmcc 发表于 2019-3-28 16:50
1、有使用这种情形的方案。
2、因程序烧写后,板上电复位后即进入你的程序,JTAG端口就被你的程序映射了。 ...

static void remap(void)
{
        __HAL_RCC_AFIO_CLK_ENABLE();
       
        volatile uint32_t map_copy = AFIO->MAPR;
        map_copy &= ~((7 << 24) + (3 << 8));
        map_copy |= (2 << 24) + (1 << 8);
        AFIO->MAPR = map_copy;
}


一次全部重映射  OK
回复

使用道具 举报

36

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
943
金钱
943
注册时间
2015-11-24
在线时间
162 小时
 楼主| 发表于 2019-3-28 16:38:51 | 显示全部楼层
看了一下,说是AFIO->MAPR的24~26是只写的,如果再重映射读寄存器的话,值是不确定的,造成仿真器问题,准备试一下,稍后通知结果
回复

使用道具 举报

15

主题

317

帖子

0

精华

高级会员

Rank: 4

积分
863
金钱
863
注册时间
2015-2-12
在线时间
354 小时
发表于 2019-3-28 16:50:13 | 显示全部楼层
1、有使用这种情形的方案。
2、因程序烧写后,板上电复位后即进入你的程序,JTAG端口就被你的程序映射了。
3、烧写除了用复位键外,我烧写程序通常不用复位方法,而是点击烧写,立即上电方式烧写。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 22:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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