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-03-16 16:23
STM32学习笔记之正交编码器接口
最近做一个项目,主控芯片用STM32RBT6,要用到光栅尺,本来带一个控制器的,通过控制器的232可以读取光栅尺的数据,但这个控制器太大,设备中放不下,于是,考虑自己做一个,网上看到很多有用CPLD的方案,后来无意间发现stm32的定时器可以配置成编码器,甚喜 高兴之余,突然发现stm32的定时器是16位的,我的光栅尺的计数会超过65535,于是在21ic论坛上和几位高手请教,最终确定的方案 工作过程是配置TIM3为正交编码器模式,并定一个10ms的中断,每10ms读取一次计数值,10ms的前提是在10ms内计数器不溢出(这个思想要感谢21ic的 lxyppc ) 以下是部分代码:(这些代码修改于ST官方的例程,但我的工程用的
[单片机]
关于STM32按键妙用详解
假设PB6、7、4 三个端口: 按下为低电平(0)、否则为高电平(1)。 void ReadKey(void) { //1.获取GPIB- IDR寄存器值(获取键值) u16 ReadData = (GPIO_InputData( GPIOB ) & 0xD0) ^ 0xD0; //2.判断哪一位发生改变(按键按下) Trg = ReadData & (ReadData ^ cont); //3.在按键按下后,哪一位发生改变(按键松开) Rel = ReadData ^ Trg ^ cont; //4.按键按下没有发生改变(长按
[单片机]
STM32GPIO——快速IO的使用
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。 简单地说GPIOx
[单片机]
stm32 C语言的数据类型说明
stm32编程过程经常定义变量类型,经常担心数据运算过程中 超过变量类型范围。因为在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。所以下面列出常见数据类型: 一、C语言数据类型 stm32使用的数据类型定义在 stm32f4xx.h中 整型定义: #include core_cm4.h /* Cortex-M4 processor and core peripherals */ #include system_stm32f4xx.h #include stdint.h /** @addtogroup Exported
[单片机]
STM32单片机外部晶振配置时钟设置
学习野火的固件库UART1串口案例时,用的是SIM9008模块应用板上的STM32103F103RB芯片,使用的外部晶振是12M。 串口读取的是乱码 默认的外部晶振是8M 由于STM32的库默认是外部晶振8M的情况下实现的,所以配置串口波特率的时候也是按8M,包括主频。 如果采用外部晶振8M或12M,配置时钟为72MHZ 。 1)在system32_stm32f10x.c文件中的void SetSysClockTo72(void)里这样改: 8M: RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);//8*9=72 12M: RCC-》CFGR
[单片机]
意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效
新的STM32系统芯片低功耗,支持多种无线通信协议,简化各种用途的无线系统设计 中国,2023年11月24日 - 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;) 发布了一款新的融合无线芯片设计专长与高性能、高能效STM32系统架构的微控制器(MCU)。全新的节能功能将这款无线MCU的电池续航时间延长到15年以上。 在远距离部署的应用领域,包括能源计量、监控设备、报警系统、执行器,以及智能建筑、智能工厂和智能城市的传感器,STM32WL3无线MCU的特别有用,有助于控制功耗,并给工作划分优先级。这些高能效MCU可以改善用户体验,提供服务,减少环境足迹。通过
[嵌入式]
STM32单片机通信协议操作步骤及注意事项
STM32单片机通信协议是一种用于在不同设备之间进行数据传输的协议,它可以帮助设备之间进行高效的通信。STM32单片机通信协议可以用于实现多种不同的应用,如智能家居、智能安防、智能交通等。 STM32单片机通信协议的使用方法主要包括以下几个步骤: 1. 首先,需要确定使用的协议类型,如UART、I2C、SPI等,并确定使用的协议的具体参数,如波特率、数据位、停止位等。 2. 然后,需要在STM32单片机上配置相应的通信接口,并将其与外部设备连接起来。 3. 接着,需要编写相应的程序,实现STM32单片机与外部设备之间的数据传输。 4. 最后,需要将程序烧录到STM32单片机上,并运行程序,实现STM32单片机与外部设备之间的数
[单片机]
STM32-读保护功能和清除读保护功能设置
1、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:通过调试器(JTAG或SWD);从RAM中启动并执行的程序; 2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护写保护 对Flash的操作功能 有效有效 CPU只
[单片机]