Stm32 无法闪烁JTDI引脚
我正在使用STM32F103RCT6闪烁连接到PU中PA15-JTDI的LED 我的GPIO配置如下Stm32 无法闪烁JTDI引脚,stm32,gpio,jtag,Stm32,Gpio,Jtag,我正在使用STM32F103RCT6闪烁连接到PU中PA15-JTDI的LED 我的GPIO配置如下 GPIOA->CRH |= GPIO_CRH_MODE15; //Output mode, max speed 50 MHz. GPIOA->CRH &= ~GPIO_CRH_CNF15; //General purpose output push-pull\ 我试着像这样眨眼 #define LED_HIGH() (GPIOA->BSRR
GPIOA->CRH |= GPIO_CRH_MODE15; //Output mode, max speed 50 MHz.
GPIOA->CRH &= ~GPIO_CRH_CNF15; //General purpose output push-pull\
我试着像这样眨眼
#define LED_HIGH() (GPIOA->BSRR |= GPIO_BSRR_BR15) //LED High
#define LED_LOW() (GPIOA->BSRR |= GPIO_BSRR_BS15) //LED LOW
数据表上写着
要释放GPIO的引脚,我们需要将SWJ_CFG[2:0]配置为010或100。因此,我正在进行配置
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1; //((uint32_t)0x02000000) as 010
数据表还说我们需要对ODR/IDR寄存器做些什么,但我没有弄清楚如何将PA15(或任何JTAG引脚)配置为GPIO
AFIO_地图中的SWJ_CFG如下所示:
任何建议都会有帮助
提前感谢不要忘记启用
GPIOA
和AFIO
的时钟。这两个选项都可以在RCC->APB2ENR
中启用。只要未启用,就会忽略寄存器写入
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN;
在你们的帮助下,我得到了答案 整个代码在这里是用keilv5和CMSIS编写的
#include "stm32f10x.h"
#define LED_LOW() (GPIOA->BSRR |= GPIO_BSRR_BR15) //Led Low
#define LED_HIGH() (GPIOA->BSRR |= GPIO_BSRR_BS15) //Led High
void GPIO_Init(void);
void Blink_Led(uint16_t ms);
void Delay(uint16_t ms);
int main(void)
{
GPIO_Init();
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1; //To Free PA15
while(1)
{
Blink_Led(1000);
}
}
/*Random Delay*/
void Delay(uint16_t ms)
{
for (int i=0;i<ms;i++)
for (int j=0;j<5120;j++);
}
void Blink_Led(uint16_t ms)
{
LED_LOW();
Delay(ms);
LED_HIGH();
Delay(ms);
}
void GPIO_Init()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //Clock for Port A - PA15
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; //ENABLE clock for alternate function
GPIOA->CRH |= GPIO_CRH_MODE15; //Output mode, max speed 50 MHz.
GPIOA->CRH &= ~GPIO_CRH_CNF15; //General purpose output push-pull
}
#包括“stm32f10x.h”
#定义LED_LOW()(GPIOA->BSRR |=GPIO_BSRR_BR15)//LED LOW
#定义LED_HIGH()(GPIOA->BSRR |=GPIO_BSRR_BS15)//LED HIGH
无效GPIO_初始(无效);
无效闪烁发光二极管(uint16毫秒);
无效延迟(uint16_t ms);
内部主(空)
{
GPIO_Init();
AFIO->MAPR |=AFIO_MAPR_SWJ_CFG_1;//释放PA15
而(1)
{
闪烁发光二极管(1000);
}
}
/*随机延迟*/
无效延迟(uint16_t ms)
{
对于(int i=0;iAPB2ENR |=RCC_APB2ENR_AFIOEN;//为备用功能启用时钟
GPIOA->CRH |=GPIO_CRH_MODE15;//输出模式,最大速度50 MHz。
GPIOA->CRH&=~GPIO\U CRH\U CNF15;//通用输出推拉
}
@Colin_us,但在数据表中,其给定位为26:24 SWJ_uCFG[2:0]:串行线JTAG配置我已经编辑了问题您现在可以检查寄存器了有人能帮我吗????是的,这就是我缺少的。我没有为AFIO启用时钟。LED闪烁,但它的亮度太低。如果我通常将电源和接地连接到LED,它的亮度很好。这与代码有关吗?或者电路问题。很好,我也解决了,因为你的答案。谢谢。