GPIO的配置程序(以LED为例)

基于普中的STM32开发板原理图:
void LED_GPIO_Init(void)
{

GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO配置的结构体

__HAL_RCC_GPIOC_CLK_ENABLE(); //使能GPIOC的时钟

HAL_GPIO_WritePin(GPIOC, LED, GPIO_PIN_SET); //像GPIOC的LED引脚写数据

GPIO_InitStruct.Pin = LED; //选中的GPIO的引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //选择输出方式为推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; //没有上拉或下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; //选择低速传输
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); //将结构体的配置给GPIOC
}
GPIO结构体的成员
typedef struct
{
uint32_t Pin; //引脚

          uint32_t Mode;      //模式

          uint32_t Pull;      //上拉或者下拉

          uint32_t Speed;     //输出速度
        } GPIO_InitTypeDef;



        Pin的所有可选项:
			     GPIO_PIN_0
				 GPIO_PIN_1
				 GPIO_PIN_2
				 GPIO_PIN_3
				 GPIO_PIN_4
				 GPIO_PIN_5
				 GPIO_PIN_6
				 GPIO_PIN_7
				 GPIO_PIN_8
				 GPIO_PIN_9
				 GPIO_PIN_10
				 GPIO_PIN_11
				 GPIO_PIN_12
				 GPIO_PIN_13
				 GPIO_PIN_14
				 GPIO_PIN_15
				 GPIO_PIN_All

Mode的所有可选项:
GPIO_MODE_INPUT //浮空输入
GPIO_MODE_OUTPUT_PP //推挽输出
GPIO_MODE_OUTPUT_OD //开漏输出
GPIO_MODE_AF_PP //复用推完输出
GPIO_MODE_AF_OD //复用开漏输出
GPIO_MODE_AF_INPUT //与GPIO_MODE_INPUT相同
GPIO_MODE_ANALOG //模拟输入
GPIO_MODE_IT_RISING //具有上升边缘触发检测的外部中断模式
GPIO_MODE_IT_FALLING //具有下降边缘触发检测的外部中断模式
GPIO_MODE_IT_RISING_FALLING //具有上升/下降边缘触发检测的外部中断模式
GPIO_MODE_EVT_RISING //具有上升边缘触发检测的外部事件模式
GPIO_MODE_EVT_FALLING //具有下降边缘触发检测的外部事件模式
GPIO_MODE_EVT_RISING_FALLING //具有上升/下降边缘触发检测的外部事件模式

               中断与事件的理解:比如一老师在教室里给学生们上课。课堂上的学生可能做出各种行为动作,比方做笔记、打哈气、翻书包、讲小话等, 我们把这些行为统称为事件,其中有些行为老师往往只是视而不见,继续他的上课;而有些行为可能导致老师的上课中止, 比方讲小话,并对学生的相关行为予以警告、批评或纠正等,然后继续上课。我们把老师因为学生的某些行为而中止授课,  并产生后续动作,之后接着上课的这个过程理解为中断或中断响应。我们把可能导致老师上课中断的学生行为理解为中断事件。 

https://blog.csdn.net/tanyjin/article/details/53359883

      Pull的所有可选项:
			     GPIO_NOPULL        //不上拉也不下拉模式
				 GPIO_PULLUP        //上拉模式
				 GPIO_PULLDOWN      //下拉模式




          Speed的所有可选项:
			     GPIO_SPEED_FREQ_LOW        //低速
				 GPIO_SPEED_FREQ_MEDIUM     //中速
				 GPIO_SPEED_FREQ_HIGH       //高速

HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); //将我们在1函数初始化之后的引脚恢复成默认的状态, 即各个寄存器复位时的值。
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//读取GPIO的状态,输出为GPIO_PIN_SET(高电平)或者GPIO_PIN_RESET(低电平)

HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//将管脚值锁定,当管脚电平变化时保持锁定时的值

HAL_GPIO_TogglePin(GPIOx,GPIO_Pin);//电平翻转函数(将高电平翻转为低电平,将低电平翻转为高电平)

猜你喜欢

转载自blog.csdn.net/noob__i/article/details/83589377
今日推荐