历史上的今天
今天是:2025年06月25日(星期三)
2021年06月25日 | STM32 JTAG复用相关方法
2021-06-25 来源:eefocus
STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。具体方法如下:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
// 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能
GPIO_Configuration();
// 配置使用的GPIO口
然后在GPIO_Configuration()中添加如下代码:
//74HC595端口定义
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//TLV5610端口定义
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);
下面是关了JTAG防真后重新设置启用JTAG
STM32在程序中禁用JTAG功能后不能进行仿真会出现不能进行JTAG仿真的现象。
在程序中,通常禁止JTAG的函数如下所示:
//改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全失能(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
//改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable JTAG-DP 失能 + SW-DP使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
当设置了以上语句后,当运行了这两个语句后,JTAG仿真就与目标失去去联系。
解决办法有:
1、设置启动模式为ISP模式(BOOT0=1、BOOT1=0)或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。 将开发板断电后重新上电,此时就因不是在用户程序模式,因此就不会执行禁用JTAG的语句,JTAG功能也就可以正常使用。
2、设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可恢复JTAG功能。
3、如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。 直接将仿真器的模式设为SWD模,就可以不受这个禁止JTAG功能的影响了。
史海拾趣
|
接触DSP也快一年了,从刚开始及其不适宜,到现在真正喜欢上了这个系列的芯片 我原先用的是AVR,然后到STM32,进入公司之后开始用TI C2000系列DSP直到现在,我下面也就结合TI的DSP来说 关于DSP和普通51 AVR还有STM32的区别 DSP是为运算而生的芯片 ...… 查看全部问答> |
|
最近在做一个条码系统,用到数据采集群,我用的是SYMBOL MC3000, 开了一个小应用程序,但是在调试的时候,发现wince5.0 似乎对JAVASCRIPT的支持不太够。 我在网页中设置了一个按钮, 用到onclick=\"window.close()\", 在普通PC中使用是正常的,但 ...… 查看全部问答> |
|
喜欢折腾原电池的朋友无处不在,今天介绍的这位,用柠檬做为电解质,制作了一个手电筒。制作过程比较详细,所以推荐出来给大家。 电极材料用的是铜和锌(镀锌的铁钉),通过几组原电池串联,成功点亮了一个LED。 整个设备的示意图如下: 制 ...… 查看全部问答> |
|
前几天移植了fatfs 0.06版 并且可以用来放sd卡里的pcm编码的wav文件了,但是这个版本的只支持8+3的短文件名,所以又下载了0.07E的版 用7e版的时候 问题来了 它定义 path 用的是 xchar(int)型 ,我的文件名 该如何写呢,我按照 ...… 查看全部问答> |
|
EP868新增支持STM8L101系列和STM8L15x系列 响应客户需求,今日起EP868可支持意法半导体的超低功耗8位单片机STM8L101系列和STM8L15x系列。 总算可以打发等待良久的客户了,呵呵。 值得注意的是,STm8L101和STM8L15x系列的读保护设置,是很特别的,一个是0xaa使能读保护,加密单片机; ...… 查看全部问答> |
|
作者:武汉华嵌教学部讲师 张老师 一、 为什么要用多线程技术? 1. 避免阻塞,大家知道,单个进程只有一个主线程,当主线程阻塞的时候,整个进 ...… 查看全部问答> |
|
差分放大电路,在计算差模输出电阻的时候,为什么双端输出的时候是2*Rc,单端输出的时候是Rc,想了很久都没有弄明白其中的道理,求大神指点一下。。。不胜感激。… 查看全部问答> |




