一般来说,控制gpio外设需要三个步骤,缺一不可
1.开启外设时钟
2.设置外设工作模式
3.控制引脚高低电平
这是pc13的电路图,经电路分析,需要pc13引脚输出低电平时,指示灯才会亮,高电平或者高阻态时,指示灯不会亮,所以可以用推挽输出或开漏输出,但是开漏输出会更好一些。
#include "stm32f10x.h" // Device header
int main(void){
//1.先开启GPIOC外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//定义结构体
//2.设置外设工作模式,分析,根据pc13的电路分析,得出需要将gpioc的13号引脚设置成开漏输出模式,输出速率不需要太高,20MHZ够用
GPIO_InitTypeDef GPIO_Init_Struct;
//赋值
GPIO_Init_Struct.GPIO_Mode = GPIO_Mode_Out_OD ;//使用开漏输出,因为pc13接的是vcc
GPIO_Init_Struct.GPIO_Pin = GPIO_Pin_13;
GPIO_Init_Struct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_Init_Struct);
//3.控制引脚高低电平。将pc13点亮,即数据输出寄存器写0,引脚输出低电平,led亮,写1,引脚高阻态,led灭
while(1){
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//setbits是写1,resetbits是写0
Delay_Ms(100); //这个delay函数是自己写的,要包含头文件delay.h
GPIO_SetBits(GPIOC,GPIO_Pin_13);
Delay_Ms(100);
}
}