江协科技的stm32视频课程学习笔记 传送门
点亮PC13小灯
// 开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // gpio工作模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; // gpio编号
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // 工作频率
// 初始化gpio
GPIO_Init(GPIOC, &GPIO_InitStruct);
// 设置特定io口输出低电平。
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
对射式红外传感器计次
清除AFIO相关的配置。
void GPIO_AFIODeInit(void);
锁定某个引脚的配置,防止被意外修改。
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
引脚重映射(重映射方式, 新的状态)
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
配置AFIO的数据选择器,选择想要的中断引脚。Selects the GPIO pin used as EXTI Line.
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
清除EXTI配置,恢复到上电时的状态。
void EXTI_DeInit(void);
根据传入的 EXTI_InitStruct 结构体,初始化EXTI。
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
给机构体 EXTI_InitStruct 设置默认值。
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
软件触发外部中断
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
主程序里查看和清除标志位用EXTI_GetFlagStatus、EXTI_ClearFlag;
中断函数里查看和清除标志位EXTI_GetITStatus、EXTI_ClearITPendingBit。
获取指定中断线状态。Checks whether the specified EXTI line flag is set or not.
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
指定中断线标志位置0。Clears the EXTI's line pending flags.
void EXTI_ClearFlag(uint32_t EXTI_Line);
获取指定中断标志位状态。Checks whether the specified EXTI line is asserted or not.
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
清除中断挂起标志位。Clears the EXTI's line pending bits.
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
配置中断分组,整个程序只配置一次。
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
根据 NVIC_InitStruct 内容初始化NVIC
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
设置中断向量表
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);
系统低功耗配置
void NVIC_SystemLPC