完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在使用tiMER3和中断来做一个LED灯的闪烁功能,在Timer3的中断中将LED灯电平翻转,Timer3使用的是APB1的时钟,按我的配置应该是90MHz,我配置Timer3的TIM_Prescaler=18000,故Timer3的时钟就是5kHz,那么在设置TIM_Period=2000-1的情况下,得到的情况应该是高低电平各0.4秒,周期为0.8秒。
下面贴上我的程序: void SysInit(void) { //Resets the RCC clock configuration to the default reset state RCC_DeInit(); //Configures the External High Speed oscillator (HSE) RCC_HSEConfig(RCC_HSE_ON); //Waits for HSE start-up while( RCC_WaitForHSEStartUp() != SUCCESS ); //Configures the main PLL clock source, multiplication and division factors //M=8,N=360,P=16,Q=7 RCC_PLLConfig(RCC_PLLSource_HSE,8,360,16,7); //Enables or disables the main PLL RCC_PLLCmd(ENABLE); //Configures the system clock (SYSCLK) RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //Configures the AHB clock (HCLK) RCC_HCLKConfig(RCC_HCLK_Div1); //Configures the Low Speed APB clock (PCLK1) RCC_PCLK1Config(RCC_HCLK_Div4); //Configures the High Speed APB clock (PCLK2). RCC_PCLK2Config(RCC_HCLK_Div2); } void TIMER_cfg(void) { /*Define Time3 Initial type structure*/ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /*Deinit Time3*/ TIM_DeInit(TIM3); /*Enable Timer3 Clock*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /*Using internal clock for TIM3*/ TIM_InternalClockConfig(TIM3); /*What's this?*/ TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /*CK_CNT=90000000/18000=5kHz*/ TIM_TimeBaseStructure.TIM_Prescaler=18000; /*Counting mode is up*/ TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /*Specifies the period value to be loaded into the active Auto-Reload Register at the next update event*/ TIM_TimeBaseStructure.TIM_Period=2000-1; /*It will generate an interrupt when the overfow number reach the RepetitionCounter number*/ TIM_TimeBaseStructure.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM3, TIM_TimeBaseStructure); /*Clear up the Time updata flag*/ TIM_ClearFlag(TIM3,TIM_FLAG_Update); /*Disable the preload buffer of arr*/ TIM_ARRPreloadConfig(TIM3,DISABLE); /*Enable the TIM3 IT*/ TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); } |
|
相关推荐
1个回答
|
|
RCC_PLLConfig(RCC_PLLSource_HSE,8,360,16,7);这里设置有问题,应该将16改为2。我使用RCC_GetClocksFreq( Clock);这个函数查到的。还有就是如我想了解RCC_PLLConfig(RCC_PLLSource_HSE,8,360,16,7);函数中的参数,具体大家找函数中的解释吧,或者查固件库手册,希望对大家会有所帮助
|
|
|
|
只有小组成员才能发言,加入小组>>
调试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?各有什么优势啊?
742浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
578浏览 3评论
601浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
563浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 15:51 , Processed in 0.889684 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号