完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void MX_tiM2_Init(void)
{ TIM_SlaveConfigTypeDef sSlaveConfig; TIM_MasterConfigTypeDef sMasterConfig; TIM_ClockConfigTypeDef sClockSourceConfig; htim2.Instance = TIM2; htim2.Init.Prescaler = 0; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 0xFFFF; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; if (HAL_TIM_Base_Init( htim2) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2; sClockSourceConfig.ClockPolarity = TIM_ETRPOLARITY_NONINVERTED;//TIM_ETRPOLARITY_NONINVERTED sClockSourceConfig.ClockPrescaler = TIM_ETRPRESCALER_DIV1; sClockSourceConfig.ClockFilter = 0x0; if (HAL_TIM_ConfigClockSource( htim2, sClockSourceConfig) != HAL_OK) { Error_Handler(); } 这是我定时器的配置方式,单片机是STM32f042f4p6,用的cubemx的HAl库,口线接的是PA0,TIM2的ETR口, 虽然用hal库我配置的相关寄存器都去看了一遍了,最终配进去的寄存器值跟标准库相同计数应用的方式是一样的,我不知道我这个问题出在哪里,还是我模式选错了。 我TIM_CLOCKSOURCE_ETRMODE2,TIM_CLOCKSOURCE_ETRMODE1,TIM_SLAVEMODE_TRIGGER模式都试过了,不行 时钟启动和输入io口配置是在上面的HAL_TIM_Base_Init( htim2)完成的,这个应该没问题 |
|
相关推荐
1个回答
|
|
看起来您正在尝试使用STM32F042F4P6的定时器2(TIM2)进行外部脉冲计数,但是遇到了一些问题。以下是一些建议和解决方案,希望能帮助您解决问题:
1. 确保您的硬件连接正确。检查外部脉冲输入引脚是否正确连接到定时器的输入捕获引脚。 2. 在初始化定时器之前,确保您已经配置了GPIO引脚作为定时器输入。使用HAL_GPIO_Init()函数设置GPIO引脚的模式、输出类型、速度等。 3. 在初始化定时器时,确保您已经设置了定时器的工作模式。根据您的需求,您可能需要使用输入捕获模式或编码器模式。 4. 在初始化定时器时,确保您已经配置了定时器的时钟源。使用HAL_TIM_ConfigClockSource()函数配置时钟源。 5. 在初始化定时器时,确保您已经配置了定时器的输入捕获通道。使用HAL_TIM_ConfigChannel()函数配置输入捕获通道。 6. 在初始化定时器时,确保您已经启用了定时器的输入捕获中断。使用HAL_TIM_IC_Start_IT()函数启动输入捕获中断。 7. 在中断服务例程(ISR)中,处理输入捕获中断。在HAL_TIM_IRQHandler()函数中,处理输入捕获中断。 8. 在主函数中,使用HAL_TIM_Base_Start()函数启动定时器。 以下是一个简化的示例代码,展示了如何初始化定时器2进行外部脉冲计数: ```c void MX_TIM2_Init(void) { htim2.Instance = TIM2; htim2.Init.Prescaler = 0; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 0xFFFF; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim2); // Configure GPIO pin as input for TIM2 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // Configure TIM2 as input capture TIM_HandleTypeDef *htim2 = &htim2; TIM_IC_InitTypeDef sICConfig = {0}; sICConfig.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; sICConfig.ICSelection = TIM_ICSELECTION_DIRECTTI; sICConfig.ICPrescaler = TIM_ICPSC_DIV1; sICConfig.ICFilter = 0; HAL_TIM_IC_ConfigChannel(htim2, &sICConfig, TIM_CHANNEL_1); // Enable TIM2 input capture interrupt HAL_TIM_IC_Start_IT(htim2, TIM_CHANNEL_1); } void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&htim2); } ``` 请根据您的具体需求调整上述示例代码。希望这些建议能帮助您解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1659 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1571 浏览 1 评论
998 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1617 浏览 2 评论
1877浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
663浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
529浏览 3评论
548浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 08:54 , Processed in 0.831312 second(s), Total 79, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号