完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
STM32定时器从模式———复位模式
在网上找相关的STM32复位模式的配置几乎没有,于是看官方提供的例程,官方的提供的例程没有针对性,眉毛胡子袜子一把抓,而且都是定时器级联,不是很好阅读,于是简单写了个关于定时器复位模式的简单配置例程,仅供大家参考。 应用:这里的定时器复位模式,我把它应用在串口通信判断接收一帧的结束上,也就是说,接受 一帧数据结束的进入中断,否则,只要还有数据在传,就一直复位定时器,不会进入中断。相比于依赖于串口中断再用定时器去计时,这种硬件的判断一帧结束的方式会更可靠。 采用复位模式,所需资源:一个基本/高级定时器,定时器的一个通道,串口。 芯片:stm32f302CBT6 定时器: TIM3 CH1 CH1对应引脚 : PB4 配置完成后 PB4 拿杜邦线 接在 PA10(RX)上 为什么是PB4 :因为我在CubeMX上,勾选了一下,SlaveMode:Reset_Mode, Trigger Sourse:TI1_ED 他就自动帮我选择了 PB4这个引脚,不知道其他CHx是否可以,大家可以试一下,在下面评论告诉我。 这里我是先在CubeMx上选了一下之后再用库函数进行编辑。 下面配置过程: /***********************使用TIM3_TIM_TS_TI1F_ED边沿触发***************************/ /*TIM3 CH1 PB4 init */ void gpio_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE); /*enable gpioB*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); /*复用时钟*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_PinAFConfig(GPIOB,GPIO_PinSourse4,GPIO_AF_2); } /*TIM3 config*/ void tim3_init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_TIM3,ENABLE); TIM_DeInit(TIM3); /*时基单元部分根据自己需要赋值*/ TIM_TimeBaseStructure.TIM_Period = 9999; TIM_TimeBaseStructure.TIM_Prescaler = 7199; TIM_TimeBaseStructure.TIM_ClockDivsion = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_UP; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM3,DISABLE); TIM_ClearFlag(TIM3,TIM_FLAG_Updata); TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset); TIM_SelectInputTrigger(TIM3,TIM_TS_TI1F_ED); TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Disable); TIM_SelectOutputTrigger(TIM3, TIM_TRGOSourse_Enable); TIM_UpdateRequestConfig(TIM3, TIM_UpdateSource_Regular); /*enable URS*/ TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_CMD(TIM3,ENABLE); } /***********************END--使用TIM3_TIM_TS_TI1F_ED边沿触发--END***********************/ /***********************使用TIM3_TIM_TS_ETRF外部触发********************************/ /*TIM3 ETR PB3 init */ void gpio_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE); /*enable gpioB*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); /*复用时钟*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_PinAFConfig(GPIOB,GPIO_PinSourse3,GPIO_AF_10); } /*TIM3 config*/ void tim3_init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_TIM3,ENABLE); TIM_DeInit(TIM3); /*时基单元部分根据自己需要赋值*/ TIM_TimeBaseStructure.TIM_Period = 9999; TIM_TimeBaseStructure.TIM_Prescaler = 7199; TIM_TimeBaseStructure.TIM_ClockDivsion = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_UP; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); TIM_ARRPreloadConfig(TIM3,DISABLE); TIM_ClearFlag(TIM3,TIM_FLAG_Updata); TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset); TIM_SelectInputTrigger(TIM3,TIM_TS_ETRF); TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Disable); TIM_SelectOutputTrigger(TIM3, TIM_TRGOSourse_Enable); TIM_UpdateRequestConfig(TIM3, TIM_UpdateSource_Regular); /*enable URS*/ TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_CMD(TIM3,ENABLE); } /***********************END--使用TIM3_TIM_TS_ETRF边沿触发--END***********************/ void TIM3_IRQHAndle(void) { if (TIM_GetFlagStatus(TIM3,TIM_FLAG_Update) == SET) { TIM_ClearFlag(TIM3,TIM_FLAG_Update); 。.. 。.. /*do something*/ /*PB4 与 PA10 (RX)相连*/ /*RX有数据不会进中断*/ /*当RX没有数据传输且到达定时器更新中断 则标记一帧接收结束 可以处理数据*/ } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
740浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
577浏览 3评论
600浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
562浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 02:43 , Processed in 0.717808 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号