热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1.对射式红外传感器计次推荐封装为CountSensor。推荐使用的是PB14引脚。使用GPIO_Mode_IPU。思路如下:1.开启GPIOB和AFIO的RCC

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.笔记如下:


推荐阅读
author-avatar
挽木城祠_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有