继续上次的话题,今天主要还是用到了STM32的GPIO控制功能,把我自己配件好的CODE
上传下,和大家分享下我对STM32编程的体验,以后会陆陆续续的上传源代码。
希望大家多多交流
/*STM32 GPIO的输出和输入设定*/
typedef union DataFormat
{
struct
{
unsigned int value0 :1;
unsigned int value1 :1;
unsigned int value2 :1;
unsigned int value3 :1;
unsigned int value4 :1;
unsigned int value5 :1;
unsigned int value6 :1;
unsigned int value7 :1;
}Data;
long Access;
};定义一个输出输入结构体
/***********************/
/*GPIO的设定函数*/
/*用户直接使用这个函数*/
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; /*定义一个GPIO结构体*/
union DataFormat* InputPin_Value; /*定义输入结构体指针*/
union DataFormat* OutputPin_Value; /*定义输出结构体指针*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
/*使能GPIO时钟,配置到APB2时钟上*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6; /*配置IO*/
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; /*配置50MHZ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*数据输出方式*/
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*初始化A_IO,把 GPIO_InitStructure的地址分配给GPIO_Init函数*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);
/* 使能GPIO时钟,配置到APB2时钟上*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; /*配置IO*/
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; /*配置50MHZ*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /*下拉输入*/
GPIO_Init(GPIOG,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5); /*输出高电平*/
GPIO_ResetBits(GPIOA,GPIO_Pin_6); /*输出低电平*/
GPIO_PinLockConfig(GPIOA,GPIO_Pin_5|GPIOA_Pin_6);
/*锁存GPIO数据,现在GPIO端口有锁存器作用*/
OutputPin_Value->Data.value5=GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5);
/*读出A中Pin5数据*/
OutputPin_Value->Data.value6=GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_6);
/*读出A中Pin6数据*/
OutputPin_Value->Access=GPIO_ReadOutputData(GPIOA); /*读出A中所有数据*/
GPIO_EXTLineConfig(GPIO_PortSource_GPIOG,GPIO_PinSource7);
/*G中Pin7 设置成外部中断方式*/
InputPin_Value->Data.value7=GPIO_ReadInputDataBit(GPIOG,GPIO_Pin_7);
/*读出 G中Pin7中的值*/
}
文章评论(0条评论)
登录后参与讨论