stm32c8t6引脚图
开发板引脚图
GPIO端口的每个位可以由软件分别配置成 多种模式。
─ 输入浮空
─ 输入上拉
─ 输入下拉
─ 模拟输入
─ 开漏输出
─ 推挽式输出
─ 推挽式复用功能
─ 开漏复用功能
配置GPIO端口步骤:开启时钟->使用结构体设置输出模式、引脚、速度->初始化GPIO。
//开启时钟GPIOCRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//定义结构体变量GPIO_InitTypeDef GPIO_InitStructuer;//设置GPIO模式,推挽输出模式GPIO_InitStructuer.GPIO_Mode = GPIO_Mode_Out_PP;//设置GPIO引脚GPIO_InitStructuer.GPIO_Pin = GPIO_Pin_13;//设置GPIO速度GPIO_InitStructuer.GPIO_Speed = GPIO_Speed_50MHz;//传入结构体,初始化GPIOGPIO_Init(GPIOC,&GPIO_InitStructuer);
在stm32f10x_gpio.h文件中可以看到,读、写、初始GPIO函数有
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
void GPIO_AFIODeInit(void);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
这样就可以实现点灯闪烁操作了
#include "stm32f10x.h" // Device header
#include "Delay.h" int main()
{//开启时钟GPIOCRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//定义结构体变量GPIO_InitTypeDef GPIO_InitStructuer;//设置GPIO模式,推挽输出模式GPIO_InitStructuer.GPIO_Mode = GPIO_Mode_Out_PP;//设置GPIO引脚GPIO_InitStructuer.GPIO_Pin = GPIO_Pin_13;//设置GPIO速度GPIO_InitStructuer.GPIO_Speed = GPIO_Speed_50MHz;//传入结构体,初始化GPIOGPIO_Init(GPIOC,&GPIO_InitStructuer);//设置PC13为低电平//GPIO_ResetBits(GPIOC,GPIO_Pin_13);//设置PC13为高电平//GPIO_SetBits(GPIOC,GPIO_Pin_13);while(1){//设置PC13为低电平GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);Delay_ms(500);//设置PC13为高电平GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);Delay_ms(500);} }