完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
MCU:stm32L0
主要搞清楚系统时钟,我在上文设置系统时钟为HSE(外部高速时钟),设置为8M。 //SYSCLK=Fs*PLLMUL/PLLDIV; //Fu***=Fvco/pllq=Fs*(plln/(pllm*pllq)); //SYSCLK = //Fs 8M //Fvco: 8M //SYSCLK: 系统时钟频率 8*8/2=32 //PLLMUL:倍频 8 //PLLDIV:分频系数 2 以上配置,设置AHB为 32M,AHB1为4M,AHB2为32M 通用定时器时钟为AHB1时钟的2倍,8M。 可以由如下公式计算定时时间,假设定时时间为10s,设置计数值(Period)为9999, 则计数频率为(计数值+1)/(计数值)=1000Hz 分频系数(Prescaler )为定时器时钟(8M)/计数频率 = 分频系数+1,为7999。 配置定时器代码如下: TIM_HandleTypeDef TIM2_Handler; //定时器句柄 void TIM2_Init(void) //定时10s { TIM2_Handler.Instance = TIM2; TIM2_Handler.Init.Prescaler = 7999; TIM2_Handler.Init.CounterMode = TIM_COUNTERMODE_UP; TIM2_Handler.Init.Period = 9999; TIM2_Handler.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&TIM2_Handler); HAL_TIM_Base_Start_IT(&TIM2_Handler); //使能定时器2和定时器2更新中断:TIM_IT_UPDATE } //定时器底册驱动,开启时钟,设置中断优先级 //此函数会被HAL_TIM_Base_Init()函数调用 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) { if(htim->Instance==TIM2) { __HAL_RCC_TIM2_CLK_ENABLE(); //使能TIM3时钟 HAL_NVIC_SetPriority(TIM2_IRQn,1,3); //设置中断优先级,抢占优先级1,子优先级3 HAL_NVIC_EnableIRQ(TIM2_IRQn); //开启ITM3中断 } } //定时器2中断服务函数 void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&TIM2_Handler); } uint16_t sec_10 = 0; //回调函数,定时器中断服务函数调用 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim==(&TIM2_Handler)) { // LED1=!LED1; //LED1反转 sec_10++; } } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1909 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1970浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
807浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
255浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
624浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 05:10 , Processed in 0.628226 second(s), Total 43, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号