搜索
查看: 1961|回复: 4

[已解决] f103在失能JTAG开启SW的时开启UART1的重映射功能无法下载调试

[复制链接]

该用户从未签到

2

主题

7

帖子

0

蝴蝶豆

金牌会员

最后登录
2020-5-17
发表于 2017-9-10 21:42:44 | 显示全部楼层 |阅读模式
开发平台:STM32F103RE,
编译环境:MDK5.22 WIN10家庭版 STLINK2.1 SW模式
固件库:HAL库

问题:__HAL_AFIO_REMAP_SWJ_NOJTAG()和__HAL_AFIO_REMAP_USART1_ENABLE()同时使用,使用stlink2.1 sw无法下载和调试。。。。

现象:在调试串口1时,硬件板子使用的是PB6 PB7,所以就需要将串口1重映射到PB6 PB7,在程序中调用__HAL_AFIO_REMAP_USART1_ENABLE(),串口1页正常工作了。除此之外,板子还是使用到PB3口,所以不得不关闭JTAG口,但是这个情况下,我们还是想使用SW进行调试。所以程序中调用了__HAL_AFIO_REMAP_SWJ_NOJTAG()宏,PB3也能正常工作。但是问题就来了,在送STLINK2.1进行下载时,会提示无法找到目标,也就是找不到芯片。

1. 我们将__HAL_AFIO_REMAP_SWJ_NOJTAG()宏关闭后,但是保留__HAL_AFIO_REMAP_USART1_ENABLE()宏,串口1正常工作,又可以下载调试了
2. 我们将__HAL_AFIO_REMAP_USART1_ENABLE()宏关闭后,但是保留__HAL_AFIO_REMAP_SWJ_NOJTAG()宏,PB3正常工作,又可以下载调试了


去看了一下底层__HAL_AFIO_REMAP_SWJ_NOJTAG()和__HAL_AFIO_REMAP_USART1_ENABLE()是不会相互影响的。


请问这个现象是芯片的BUG?还是HAL库的BUG?还是说同时开启是没有问题的,只是我的程序有哪里没有注意到,有其他逻辑错误或者使用错误导致这种现象的。

回复

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2018-2-14 09:45:40 | 显示全部楼层
本帖最后由 wenyangzeng 于 2018-2-14 09:58 编辑

根据实际测试:下载调试使用SWD模式,无需PB3参与,可以正常下载调试:

无标题.png

SWD.rar (8.11 MB, 下载次数: 0)

评分

参与人数 1蝴蝶豆 +5 收起 理由
zero99 + 5 新年快乐

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2189

帖子

397

蝴蝶豆

论坛元老

最后登录
2021-12-8
发表于 2018-2-14 10:40:27 | 显示全部楼层
当使用 __HAL_AFIO_REMAP_SWJ_NOJTAG()函数后,
应该重新配置一下相关的GPIO 口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);  

注意:不要忘记在RCC_Configuration()中开启AFIO时钟,

//AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

还有,当执行了 __HAL_AFIO_REMAP_USART1_ENABLE()函数后,
单步调试,跟踪一下,SWG_CFG 寄存器,是否被修改了。

评分

参与人数 1蝴蝶豆 +5 收起 理由
zero99 + 5 新年快乐

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2018-2-14 10:41:49 | 显示全部楼层
楼上正解,并且在MDK的设置里的"DEBUG"中的“setting”内,直接使用SWD模式调试,注意不要选“JTAG”模式,PB3就可以和常规的IO引脚一样正常使用了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3 新年快乐

查看全部评分

回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2022-7-6 00:03
  • 签到天数: 1559 天

    [LV.Master]

    0

    主题

    3214

    帖子

    110

    蝴蝶豆

    论坛元老

    最后登录
    2022-7-6
    发表于 2018-2-14 14:31:07 | 显示全部楼层
    又学到了一招,受益匪浅!...
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-5-7 09:24 , Processed in 1.207354 second(s), 47 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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