stm32c8t6引脚图
开发板引脚图
GPIO端口的每个位可以由软件分别配置成 多种模式。
─ 输入浮空
─ 输入上拉
─ 输入下拉
─ 模拟输入
─ 开漏输出
─ 推挽式输出
─ 推挽式复用功能
─ 开漏复用功能
配置GPIO端口步骤:开启时钟->使用结构体设置输出模式、引脚、速度->初始化GPIO。
//开启时钟GPIOC
RCC_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;
//传入结构体,初始化GPIO
GPIO_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()
{
//开启时钟GPIOC
RCC_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;
//传入结构体,初始化GPIO
GPIO_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);
}
}