完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
|
|
相关推荐
1个回答
|
|
|
在使用定时器的时候发现定时精度不仅不准确,而且相差很大。在使用系统滴答定时器的延时函数时,也发现定时不准确的问题。延时函数如下:
void delay_init() { #ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了。 u32 reload; #endif SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8 fac_us=SystemCoreClock/8000000; //为系统时钟的1/8 #ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了。 reload=SystemCoreClock/8000000; //每秒钟的计数次数 单位为K reload*=1000000/OS_TICKS_PER_SEC;//根据OS_TICKS_PER_SEC设定溢出时间 //reload为24位寄存器,最大值:16777216,在72M下,约合1.86s左右 fac_ms=1000/OS_TICKS_PER_SEC;//代表ucos可以延时的最少单位 SysTick-》CTRL|=SysTick_CTRL_TICKINT_Msk; //开启SYSTICK中断 SysTick-》LOAD=reload; //每1/OS_TICKS_PER_SEC秒中断一次 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk; //开启SYSTICK #else fac_ms=(u16)fac_us*1000;//非ucos下,代表每个ms需要的systick时钟数 #endif } void delay_ms(u16 nms) { u32 temp; SysTick-》LOAD=(u32)nms*fac_ms;//时间加载(SysTick-》LOAD为24bit) SysTick-》VAL =0x00; //清空计数器 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick-》CTRL; } while(temp&0x01&&!(temp&(1《《16)));//等待时间到达 SysTick-》CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick-》VAL =0X00; //清空计数器 } 经过尝试发现,STM32默认使用的是外部晶振8HZ,如果晶振变为12Mhz,需要更改库函数,步骤如下: ① 打开stm32f10x.h ,修改如下: #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!《 Value of the External oscillator in Hz */ #else #define HSE_VALUE ((uint32_t)12000000) /*!《 Value of the External oscillator in Hz */ // modify by liujian 8000000 #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */ ② 打开system_stm32f10x.c, 修改如下: /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6); // modify by liujian RCC_CFGR_PLLMULL9 #endif /* STM32F10X_CL */ ③ option -》 target, 调整晶振频率为12M。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4228 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3266 浏览 1 评论
2799 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2233 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
15215 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3181浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1949浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2118浏览 3评论
2024浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2225浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-18 03:47 , Processed in 0.671805 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1473