光敏传感器控制蜂鸣器和EXTI外部中断等


一、光敏传感器控制蜂鸣器

在这里插入图片描述
不停的读光敏传感器的引脚输入值,如果是(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);//

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值