一、光敏传感器控制蜂鸣器
不停的读光敏传感器的引脚输入值,如果是(uint8_t)Bit_SET
(高电平1),打开蜂鸣器,else (uint8_t)Bit_RESET
(低电平0)关闭蜂鸣器
二、OLED显示屏
int main(){
OLED_Init();
OLED_ShowChar(1,1,'A');
OLED_ShowString(1,3,"HelloWorld");
OLED_ShowNum(2,1,12345,5);
OLED_ShowSignedNum(2,7,-66,2);
OLED_ShowHexNum(3,1,0xAA55,4);
OLED_ShowBinNum(4,1,0xAA55,16);
OLED_Clear();
while(1){
}
}
三、EXTI外部中断
抢占优先级:不等任务完成就执行
响应优先级:等任务完成后插队先执行
通道数量小于引脚数量,需要AFIO作数据选择器,PA0 PB0 PC0…只有其中一个能连接到EXTI的通道0上,同理PA1 PB1…,相同的PIN不能同时触发中断
注意EXTI5-9、EXTI10-15,分别触发同一个中断函数,需要再根据标志位来区分中断,是为了减少NVIC的通道资源的占用
四、若干库函数
1、AFIO外设的库函数
void GPIO_AFIODeInit(void);//复位AFIO外设,调用函数AFIO外设的配置全部清除
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//锁定GPIO配置,调用函数,参数指定某个引脚,这个引脚的配置就会被锁定,防止意外更改
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
void GPIO_EventOutputCmd(FunctionalState NewState);
//用来配置AFIO的事件输出功能的
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);//进行引脚重映射,第一个参数选择要重映射的方式,第二个参数是新的状态
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//配置AFIO的数据选择器,来选择我们想要的中断引脚
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);//与以太网有关
2、EXTI库函数
void EXTI_DeInit(void);
//把exti配置都清楚,恢复成上电默认的状态
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
//初始化
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
//把参数传递的结构体变量赋一个默认值
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
//调用这个函数,参数给一个指定的中断线,软件触发一次这个外部中断,如果只需要外部引脚触发中断,就不需要这个函数
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
//获取指定的标志位是否被置1了
void EXTI_ClearFlag(uint32_t EXTI_Line);
//对置1的标志位进行清除
如果想在主程序里查看和清除标志位,用上两个函数,如果想在中断函数里查看和清除标志位,用下两个函数
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
//获取中断标志位是否被置1了
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
//清除中断挂起标志位
3、NVIC库函数
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
//指定中断分组
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
//根据结构体里指定的参数初始化NVIC
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);
//设置中断向量表
void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);
//系统低功耗配置
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);
//