在STM32要使用JTMS(PA13)、 JTCK(PA14)作为普通I/O口的时候,要在初始化前添加如下代码(顺序不能颠倒):
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
以下两句二选一:
使用GPIO_Remap_SWJ_Disable就不能使用SWD下载功能,需要再次下载的时候只能讲BO和B1全部拉低,或者使用串口下载;使用GPIO_Remap_SWJ_JTAGDisable可以使用SWD功能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE); //Full SWJ Disabled (JTAG-DP + SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //JTAG-DP Disabled and SW-DP Enabled
例:
RCC_APB2PeriphClockCmd(RED_GPIO_CLK | RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStr.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStr.GPIO_Pin = RED_GPIO_PIN;
GPIO_InitStr.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(RED_GPIO_PORT,&GPIO_InitStr);
关键字:STM32 IO口
引用地址:
STM32将PA13/PA14/PA15当做普通的IO口使用
推荐阅读最新更新时间:2024-03-16 15:35
正点原子 第6讲 STM32芯片解读
1.芯片的资源 选型手册可以看到 芯片的资源 Flash size 是 片上flash的大小 这样一直对应 下去。都可以在 选型手册中来查找 比如他们的内核都是用的 cortex m3内核 一般情况下外部晶振用8M DMA用于高速的数据传输 系统定时器 通常用于ucos的延时 APB2 一般挂载高速外设 APB1挂载低速外设 芯片的引脚与功能是怎么定义的 我们可以在数据手册中找到 引脚对应的功能。 端口的功能会在后面进行介绍。 标注FT的引脚代表容忍5V VDD 连到 3.3V VBAT接电源 VDDA 也是接到3.3V VDD 和 VSS就是数字
[单片机]
STM32时钟配置,不同晶振时需要配置的程序
在“stm32f10x.h”这个头文件里: #define HSE_Value ((uint32_t)8000000) /! Value of the External oscillator in Hz/ 斜体内容默认是8000000,在你修改了外部晶振时,要和你的外部晶振数值相同,不如我的外部晶振时24M,我就把它改成24M,这样就可以了, 还有一处要更改是在“system_stm32f10x.c”里: static void SetSysClockTo72(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /! SYSCLK, HCLK, PCLK2 and PC
[单片机]
STM32系统时钟默认设置
“我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);这个仅仅只是起到开启挂载在APB2线上的USART1时钟的作用罢了,APB2的时钟频率是多少我们并不知道” 我们先来了解一些stm32的时钟结构。 这个图说明了STM32的时钟走向,从图的左边开始,从时钟源一步步分配到外设时钟。 从时钟频率来说,又分为高速时钟和低速时钟,高速时钟是提供给芯片主体的主时钟,而低速时钟只是提供给芯片中的RTC(实时时钟)
[单片机]
玩转STM32(10)CPU的脉搏
前面学习了怎么样下载程序到开发板, 并且可以运行起来,看到LED灯轮回地亮灭。你也许很好奇为什么LED会轮流地亮灭,像拥有生命一样,具有周期性地工作。要解决这个问题,我们得学习CPU的脉搏,那么什么是CPU的脉搏呢?其实CPU就是一堆泥沙和一些金属组成的,本身是不具备这种生命的特性,那么它周期性地工作的秘密又是什么呢?其实CPU之所以有这种特性,是因为它靠一个振荡电路来实现,这个振荡电路就是CPU的心脏,如果没有它是不可能产生任何的跳动。 在这个振荡电路里,你也许听过石英晶振这个名称,为什么要使用它呢?物理学家在研究物质的属性时,发现石英有一个特性,当把石英放在一个电场里,石英会变长,当电场去掉后,又可以恢复原来的长度。在这个
[单片机]
解决STM32 不能读RAM 下载的问题
制作了两个ARM-OB下载器,原以为会很快搞定,谁知道,在最后一步出现了如下的问题: ERROR: RAM check failed @ address 0x20000000. - ERROR: Write: 0xE7FEBE00 E07CE062 - ERROR: Read: 0x0000000 000000000 - ERROR: (0 bytes of RAM have been checked successfully) - ERROR: Failed to read back target memory 我感觉好奇怪啊,三个月前我制作ARM-OB下载器的时候还没有这个问题出现,为什么呢? 百度该问
[单片机]
stm32使用PWM时,关闭PWM引脚会出现高电平解决方案
现在使用TIM3来产生PWM波形,并通过软件打开/关闭PWM以实现调制波形。做法是: 打开:TIM_Cmd(TIM3, ENABLE); 关闭:TIM_Cmd(TIM3, DISABLE); 跟踪到TIM_Cmd之后,发现直接操作寄存器就可以了:TIMx- CR1 |= CR1_CEN_Set; 这个问题算解决了。 但是PWM关闭后,管脚电平是高电平,这不是我需要的……需要的是低电平。尝试关闭PWM后,加一行GPIO_ResetBits(GPIOC, GPIO_Pin_6);以把管脚设置为低电平。测试代码: while(1) { ENABLE_PWM(); Delay_ms(10);//延时若干ms DISA
[单片机]
如何升级STM32单片机的代码
bootloader设置: static void check_boot_mode(void) { uint32_t JumpAddress; void(*Jump_To_Application)(void); if (((*((__IO uint32_t*)(APP_SEGA_START_ADDRESS+8))) & 0x2FFE0000 ) == 0x20000000) { JumpAddress = *(__IO uint32_t*) (APP_SEGA_START_ADDRESS + 12); Jump_To_Application = (void *)JumpAddress; __set_MSP(*((__IO ui
[单片机]