STM32小项目总结2:(内含:1.对射式红外传感器计次+2.旋转编码器计次+3.定时器定时中断+4.定时器外部中断+5.笔记)

简介: STM32小项目总结2:(内含:1.对射式红外传感器计次+2.旋转编码器计次+3.定时器定时中断+4.定时器外部中断+5.笔记)

1.对射式红外传感器计次



推荐封装为CountSensor。推荐使用的是PB14引脚。使用GPIO_Mode_IPU。


思路如下:


1.开启GPIOB和AFIO的RCC(RCC_APB2Per.....)+2.初始化GPIO(使用库函数GPIO_Init(参数选择GPIO_Mode_IPU))+3.配置AFIO的通道(使用库函数GPIO_EXTIlineConfig(参数选择14引脚对应的14通道))+4.配置EXTI(EXTI_Init(参数Mode=Mode_Interrupt;_line=_line_14;_LintCmd=ENABLE;_Trigger=_Falling))+5.配置NVIC(NVIC_Init(参数_SuvPrior是抢占优先级,_Preemption是响应优先级,此处随意配置+参数通道选择填写为EXTI15_10_IRQn)+NVIC_PriorityGroupConfig(参数选择_2))+6.自定义参数来确定15_10中具体的14通道(推荐自定义函数void EXTI15_10_IRQHandler,里面执行的逻辑是使用查看标志位函数是否被置EXTI_GetITStatus()==SET和读某一位的函数GPIO_ReadInputDataBit()和清除标志位的EXTI_ClearITPendingBit())


补充:库函数如下:EXTI_GetFlagStatus()   查看标志位


                              EXTI_ClearFlag()            清除标志位


                            EXTI_GetITStatus()          中断中查看标志位


                           EXTI_ClearITPendingBit     中断中清除标志位


2.旋转编码器计次:


推荐封装函数为Encoder,初始化环节与对射式红外传感器基本相同。只有如下一点点变化:


初始化GPIO时,使用两个分别为GPIO_PIN_1和GPIO_PIN_0(可自由调整)


选择AFIO的通道时,选择两个通道,分别是GPIO_PinSouce0和GPIO_PinSouce1。


自定义通道函数时,需要定义两个,分别是void EXTI_IRQn0和void EXTI_IRQn1。


自定义函数思路与对射式红外传感器基本相同。先使用EXTI_GetFlagStatus查看标志位是否被置,在使用GPIO_ReadInputDataBit判断是否为1,满足条件就自增1,达到技术效果。


3.定时器定时中断:


推荐封装为Tim


思路:


1.开启RCC的Tim2时钟(在GPIOB上)+2.选择内部时基单元(Tim_InternalClockConfig+)3.初始化内部时钟(Tim_TIMEBaseInit)+4.中断输出控制(Tim_ITConFig(IT_选择_IT_UpData)+TIM_ClearFlag())+5.选择外部通道(NVIC_PriorityGroupConfig(选择_2))+6.初始化NVIC(NVIC_Init())+7.开启定时器(Tim_Cmd)+8.自定义函数选择具体通道(推荐使用Tim2_IRQnHandler,思路基本一致,不再赘述)


4.定时器外部中断:


与定时器定时中断基本相同,此处只写不同的部分,如下:


因为是外部中断,所以需要接外部中断源,如传感器接PB2,所以两个RCC函数,分别是TIM3和GPIOB。


在第二步时,此处选择外部时基单元,使用TIM_ETRClockMode2Config(第二个参数选择_GPSC_OFF不分配,第三个参数Polarity选_NonInvented不反向上升沿有效,第四个参数滤波器需要在0x00~0x0f之间,不使用选择0)


在第三步时,配置时基单元,更改自动重装和预分频器大小分别为10-1和1-1


其他地方基本不变,不再赘述


5.笔记如下:


98e9c3e36420477895fa4fdfdfe0e6be.jpg


相关文章
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
423 2
|
4月前
|
传感器
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
333 0
|
4月前
|
芯片
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
stm32f407探索者开发板(十二)——Systick滴答定时器-延时函数讲解
239 0
|
4月前
|
传感器 数据安全/隐私保护 数据格式
STM32CubeMX DHT11温湿度传感器
STM32CubeMX DHT11温湿度传感器
232 11
|
4月前
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
215 10
|
5月前
|
芯片
【STM32】STM32简述定时器
【STM32】STM32简述定时器
|
4月前
STM32CubeMX 定时器
STM32CubeMX 定时器
143 0
|
4月前
stm32f407探索者开发板(二十三)——定时器中断实验
stm32f407探索者开发板(二十三)——定时器中断实验
353 0
|
5月前
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码