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


相关文章
|
3月前
QT上位机串口+STM32单片机项目(二)
QT上位机串口+STM32单片机项目
|
3月前
QT上位机串口+STM32单片机项目(一)
QT上位机串口+STM32单片机项目
127 0
|
3月前
STM32中断与事件的理解
STM32中断与事件的理解
46 0
|
4月前
STM32外中断
STM32外中断
34 0
|
4月前
|
数据格式
【STM32】串口通讯USART串口中断配置
【STM32】串口通讯USART串口中断配置
123 0
|
4月前
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
111 0
|
4月前
【STM32】高级定时器TIM1计数中断配置
【STM32】高级定时器TIM1计数中断配置
237 0
|
5月前
|
智能硬件
STM32智能家居7天小项目(1)RTOS引入
STM32智能家居7天小项目(1)RTOS引入
62 0
|
5月前
|
智能硬件
STM32智能家居7天小项目(2)串口的使用
STM32智能家居7天小项目(2)串口的使用
60 0
|
5月前
|
智能硬件
STM32智能家居7天小项目(3)ESP8266和STM32的通信简单介绍
STM32智能家居7天小项目(3)ESP8266和STM32的通信简单介绍
99 0
推荐文章
更多