STM32 JTAG复用相关方法

发布者:创意旅程最新更新时间:2021-06-25 来源: eefocus关键字:STM32  JTAG  复用 手机看文章 扫描二维码
随时随地手机看文章

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功能的影响了。


关键字:STM32  JTAG  复用 引用地址:STM32 JTAG复用相关方法

上一篇:浅析STM32中SysTick在3.5固件库中的应用
下一篇:电动汽车快速充电机监控终端的设计

推荐阅读最新更新时间:2024-11-04 11:46

让菜鸟秒变stm32高手的STM32CubeMX
菜鸟到高手,显得有些霸气哈,不过的确如此,官方带给我们一个比较实用的stm32的工具。这个工具就是STM32CubeMX,昨天玩freeRTOS的时候就提到过。说到freeRTOS,这里就多说两句。全局变量,在任务间相互访问的时候也是需要临界保护的,不然可能会出现奇怪的问题。不过我们可以关掉时间片调度,任务间可以访问全局变量而不用加保护(不等于菜鸟可以随意代码)。关闭了时间片调度,只有发生vTaskDelay的时候才会上下文切换。只要代码合理访问全局变量可以不加保护的。因此代码也不是可以任意书写的,关于freeRTOS的问题,多看看源码,一切都会有答案。源码较少,这里就不过多介绍。关闭时间片不是网上说的configUSE_
[单片机]
STM32上电启动过程分析
单片机上电后执行的第一段代码 1.初始化堆栈指针 SP=_initial_sp 2.初始化 PC 指针=Reset_Handler 3.初始化中断向量表 4.配置系统时钟 5.调用 C 库函数_main 初始化用户堆栈,然后进入 main 函数。 在正式讲解之前,我们需要了解STM32的启动模式。 STM32的启动模式 手册可以在Keil中跳转查看 STM32的三种启动模式 首先要讲一下STM32的启动模式,因为启动模式决定了向量表的位置,STM32有三种启动模式: 1. 主闪存存储器(Main Flash memor
[单片机]
<font color='red'>STM32</font>上电启动过程分析
STM32中如何配置片内外设使用的IO端口
STM32的输入输出管脚有下面8种可能的配置: 1. 浮空输入 2. 带上拉输入 3. 带下拉输入 4. 模拟输入 5. 开漏输出 6. 推挽输出 7. 复用功能的推挽输出 8. 复用功能的开漏输出 GPIO_Mode的几种方式: GPIO_Mode_AIN模拟输入 GPIO_Mode_IN_FLOATING浮空输入 GPIO_Mode_IPD下拉输入 GPIO_Mode_IPU上拉输入 GPIO_Mode_Out_OD开漏输出 GPIO_Mode_Out_PP推挽输出 GPIO_Mode_AF_OD复用开漏输出 GPIO_Mode_AF_PP复用推挽输出 对应到外设的输入输出功能有下述三种情况: 一、外设对应的管脚为输出
[单片机]
STM32-(08):USART通信基础
USART通信 通用同步异步收发器 它支持同步单向通信和半双工单线通信。它也支持 LIN(局部互联网),智能卡协议和 irDA (红外数据组织 )SIRENDEC 规范,以及调制解调器( CTX / RTS )操作。它还允许许多处理器通信。 用于多缓冲器配置的 DMA 方式,可以实现高速数据通信。 • 全双工的异步通信 • 单线半双工通信 • 使用 DM A 的可配五的多緩冲通信 • 单独的犮送器和接收器使能位 • 检测标志   接 收 缓 冲 器 满   发 送 缓 冲 器 空   传 输 结 束 标 志 • 校验控制   发 送 校 验 位   对 接 收 数 据 进 行 校 验 • 四个饼误检測标志 • 10个带标志的中断源
[单片机]
STM32-(08):USART通信基础
STM32 F4 (8) Systick滴答定时器-延时函数讲解
SysTick定时器适用所有的STM32开发板,这节课讲解SysTick定时器产生的 延时函数,STM32开发指南5.1小节有有关SysTick相关的 介绍,在程序中在delay文件夹中,SysTick定时器是内核级别的,这个定时器很简单,主要用来延时和用作实时系统里面的心跳时钟 可以节省单片机资源,SysTick定时器就是系统滴答定时器,是一个24位的倒计数定时器,当他计数到0时就会从RELOD寄存器(重装载寄存器)重新装载计数初值,由此循环。只要 不把他的使能 位清除,他就会永不停息的工作,即使在睡眠模式下也能正常工作。 SysTick定时器它是捆绑在NVIC中,可以产生SysTick异常,SysTick也可以产生中断 ,
[单片机]
<font color='red'>STM32</font> F4 (8) Systick滴答定时器-延时函数讲解
STM32外部中断使用注意事项
stm32尽管所有的gpio都可以设置为外部中断的功能,但是不能把所有的gpio同时设置为外部中断。例如不能把PA0和PB0同时设置为外部中断,因为PA0和PB0共用一个中断线,MCU只把最后完成初始化的管脚设置为外部中断。 如果代码编写者明确知道PA0和PB0不会同时触发,并且触发有相互依赖关系,可以通过分时设置PA0和PB0的外部中断功能。但是在大多数情况下,外部中断的触发都是随机的,那么在设计原理图的时候就要考虑到这种情况,把用到的外部中断管脚设置到后缀不同的管脚上,如PA0,PA1,PB3,PC8,....PD12,PF16,在一个工程中最多能使用16个外部中断,并且每个管脚的后缀不同。 如果设计电路板没有考虑到这种情况,
[单片机]
stm32定时器输出移相PWM
背景:由于项目需要,需要stm32输出任意相角度的PWM 前提知识: 1、stm32定时器的Tim,一般有多个OC。具体差别根据型号来定。 2、定时器的使能,理论上是多个通道同时使能 3、TIM_OCInitStructure.TIM_OCMode 的其中一个参数是 TIM_OCMode_Toggle。它的意思是计数达到比较值的时候,输出电平翻转 4、由第3点可知,移相占空比固定在了50% 5、定时器的计数方式只能为上升计数或者下降计数 6、下图为原理图 (其实,只用设计每个OC的翻转点,就能转化为相应的移相角) 关键代码: 配置通道输出方式: 配置ARR的值为2000,即一个周期计数值为2000:
[单片机]
<font color='red'>stm32</font>定时器输出移相PWM
STM32开发板入门教程(十三) - SPI模式读写SD卡
功能介绍 :使用SPI模式 读写SD卡block数据 可通过串口发送到PC机查看 SD卡是Secure Digital Card卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器材等等,尤其是被广泛应用在超薄数码相机上。呵呵 现在偶们做东西也喜欢用sd卡了 为啥? 容量大啊 价格便宜啊 读写次数100000次以上(也有资料说是300000次 呵呵) 这个次数够猛了啊 读写的速度也很快 现在高速的SD卡写速度可以达到20M/S 呵呵 如果你买的SD卡达不到这个速度
[单片机]
<font color='red'>STM32</font>开发板入门教程(十三) - SPI模式读写SD卡
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved