欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32F103学习笔记(一)

程序员文章站 2022-06-08 19:40:21
...

最近某创和某配互撕,10×10双层板打样低至5RMB,这波薅羊毛的机会当然不能轻易放过啦,这不赶紧搞出一块STM32F103C8T6最小系统板出来玩玩,顺便学习一下STM32,当做入门吧(以前一直用国产的某51单片机),没有被占用的IO口全引出,焊接技术不够,酒精、高压水枪来凑,用高难度酒精洗去助焊剂,用高压水枪冲掉卡在缝隙里的锡渣,可当我可是检测IO功能时却发现好几个IO口不听从召唤,难到是凑技术时出了问题?赶紧来查查。

STM32F103学习笔记(一)

不查不得了,一查吓一跳,最终发现原来不只PB3、PB4,还有PA13-15这五个引脚不是普通的IO口,用作JTAG/SWD仿真器的调试接口,引脚描述如《STM32参考手册》中所示:

STM32F103学习笔记(一)

同时,这些引脚主功能(复位后)的功能如下如所示:

STM32F103学习笔记(一)

这些引脚只有重定义功能后才能作为普通的IO口使用,所以我们需要对这些引脚进行配置的时候开启AFIO复用时钟。

步骤一:时钟配置时同时开启AFIO复用时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);//打开PB口时钟,AFIO复用时钟

步骤二:重映射,这里有三种模式可以选择

STM32F103学习笔记(一)

 

1.GPIO_Remap_SWJ_JTAGDisable         /*!< JTAG-DP Disabled and SW-DP Enabled */  

    即能用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试

2.GPIO_Remap_SWJ_Disable                /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

     5个引脚全为普通引脚,但不能再用JTAG&SWD仿真器调试,只能用st-link调试

3.GPIO_Remap_SWJ_NoJTRST      /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */

    PB4可为普通IO口,JTAG&SWD正常使用,但JTAG没有复位
 

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//五个引脚当做普通IO口

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //用PB3、PB4、PA15做普通IO,PA13、14用于SWD调试

GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); //只配置PB4可为普通IO口:

//选择其中一种即可

 

全段代码

void Init_LEDpin(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能PA端口时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//打开PA口时钟,AFIO复用时钟
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //用PB3、PB4、PA15做普通IO,PA13、14用于SWD调试

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;// 端口配置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure);//根据设定参数初始化GPIOA
	
    GPIO_SetBits(GPIOA,GPIO_Pin_15);//初始化设置为0
}

 

相关标签: STM32F103