STM32F10x系列的MCU复位后,PA13/14/15 以及PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。
JTAG对应IO
JTMS --> PA13
JTCK --> PA14
JTDI --> PA15
JTDO --> PB3
JNRST --> PB4
SWD对应IO
SWDIO --> PA13
SWCLK --> PA14
由对应IO关系可以看出,SWD只需用到PA13/JTMS、PA14/JTCK两根线,NREST可以接可不接,而剩下的PB4/JNTRST、PB3/JTDO和PA15/JTDI就可以当做普通IO使用,但是这三个口当做普通IO使用时需要先配置。
void GPIOInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 |
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//PB3/4
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);//PA15
}
关键字:STM32 JTAG口 普通IO
引用地址:
STM32之JTAG口作为普通IO使用
推荐阅读最新更新时间:2024-11-19 04:19
STM32再学习 -- 工程师眼中的SPI
简介: 前些天,有位网友谈到通过FPGA来实现SPI通讯。通过帖子的回复发现好多网友对SPI通讯还有些疑惑,于是今天就带着大家从SPI的标准协议,SPI在STM32单片机上的配置及在74HC595逻辑芯片通讯的实例来全方面认识一下这个既复杂又简单的通讯协议。 SPI 是Serial Peripheral Interface的缩写,直译为串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种四线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使MCU有更多的时间处理其他事务。这里要说明一下,专利在电子行业还是很关键的,因此,部分其它厂商将SPI通讯协议更名以规避高昂的专利费,但其硬件处理方式是
[单片机]
初探STM32 SPI2中断接收多组数据的处理方式
一、描述 两块STM32板子之间进行SPI通讯,都使用的是SPI2。主机连续发送多组数据(数据的格式为半字,即16位),从机采用SPI2中断方式接受主机发过来的多组数据。 针对从机中断接受方法我尝试了两种方案: 方案一:从机每接收主机发来的一组数据就进入中断一次,即主机发来几组数据从机就进入几次中断。 方案二:仅当主机发来第一组数据时,从机才触发一次中断,然后关闭中断,以循环接受的方式接受主机发过来的剩下几组数据,当所有数据接受完后,再打开从机的接受中断。 二、程序 因为两种方案的主机程序是一样的,如下: uint16_t ADC_ConvertedValueLocal ; uint8_
[单片机]
STM32----GT9157触摸IC驱动
一、硬件环境 野火F429第一代开发板,5寸触摸屏,触摸IC为GT9157,支持5点触控(但IC是支持10点触控的) 二、GT9157初始化 总的流程:1、初始化GPIO -- 2、初始化I2C -- 3、复位GT9157以确定IC从地址 -- 4、写配置寄存器(0x8047~0x8100) (1)初始化GPIO与I2C 这个不详述,I2C可用模拟,也可用硬件I2C。STM32F4的硬件I2C稳定性还行,最重要的是,需要设置I2C等待时间 与等待次数,超时跳出等待防止卡死。野火的I2C读取移植自GT9157的Linux驱动,使用一个i2c_msg结构体控制读写 static
[单片机]
嵌入式stm32学习:I2C-读写EEPROM
bsp_i2c_gpio.h #ifndef _BSP_I2C_GPIO_H #define _BSP_I2C_GPIO_H #include stm32f4xx.h #include inttypes.h #define EEPROM_I2C_WR 0 /* 写控制bit */ #define EEPROM_I2C_RD 1 /* 读控制bit */ /* 定义I2C总线连接的GPIO端口,用户只需要修改下面四行代码即可任意改变SCL和SDA的引脚 */ #define EEPROM_I2C_GPIO_PORT GPIOB #define EEPROM_I2C_G
[单片机]
高手带你理解STM32系统时钟和分频
首先来手册里的一段话。 三种不同的时钟源可被用来驱动系统时钟 (SYSCLK) · HSI振荡器时钟 · HSE振荡器时钟 · PLL时钟 一般用的是PLL时钟,后面有证据。 我们可以通过库函数获取各时钟值 void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) 在我的系统里,把时钟值打印信息如下: SYSCLK:0x44aa200 //72000000, 72MHz HCLK:0x44aa200 //72000000, 72MHz PCLK1:0x2255100 //36000000, 36MHz PCLK2:0x44aa200 //7200
[单片机]
STM32学习笔记一一输入捕获
1.概述 输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。 STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。 2.思路 高电平捕获:先设置输入捕获为上升沿检测,记录发生上升沿的时候 TIM2_CNT 的值。然后配置捕获信号为下降沿捕获,当下降沿到来时,发生捕获,并记录此时的 TIM2_CNT 值。这样,前后两次 TIM
[单片机]
STM32注释风格
@brief:对函数简要描述; @ref:引用,参照; @defgroup:用于添加define分组(defgroup); 格式: 例: @param:参数说明; @arg:参数里面可选择参量列举,对于可数情况可进行参量列举; @note:注释,配合brief一起使用可以达到很好的注释效果; @retval:返回值说明;
[单片机]
STM32寄存器学习笔记篇——SysTick寄存器设置
这个模块总共操作四个寄存器 控制与状态寄存器:SysTick_CTRL 重装值寄存器:SysTick_LOAD 当前值寄存器:SysTick_VAL 校准寄存器:SysTick_CALRB 简单的延时只用到两个寄存器SysTick_CTRL、SysTick_LOAD。 SysTick_CTRL: 其中第16位为状态标志,当从上次重装开始减到0,则该位被置1,且被读取后自动清零。 CLKSOURCE=1 使用内部时钟,=0 使用外部参考时钟。 TICKINT=1 向下计数到0时会导致SysTick处理器挂起。=0 不会挂起且软件可以使用CLKSOURCE 判断计时是否到0。 ENABLE=1 开启计数器工作连拍模式,=0禁止计
[单片机]