完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
1/ 100000s是10us,程序可以正常运行
把SystemCoreClock / 100000改为1000000后、也就是1/1000000s就是1us程序就死了, |
|
相关推荐
31个回答
|
|
|
定时到1us没问题,如果你中断处理函数太长可能就有问题
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 xyc2690 于 2015-1-11 13:33 编辑
static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks > SYSTICK_MAXCOUNT) return (1); /* Reload value impossible */ SysTick->LOAD = (ticks & SYSTICK_MAXCOUNT) - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ SysTick->VAL = (0x00); /* Load the SysTick Counter Value */ SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1< }你看看这个,SYSTICK_MAXCOUNT 是多少,超过的话就一直while(1)了。 |
|
|
|
|
zhoujing_oae 发表于 2018-11-30 15:10 定时10us,也就是tick=SystemCoreClock / 100000,定时器正常工作、说明SystemCoreClock / 100000《=SYSTICK_MAXCOUNT;那么1us就是tick=SystemCoreClock / 1000000肯定要小于SYSTICK_MAXCOUNT |
|
|
|
|
|
你仿真一下看看tick设置的具体是多少,是不是设置为零了,根本就不会工作的。
|
|
|
|
|
|
|
|
|
|
|
zhoujing_oae 发表于 2018-11-30 15:54 嗯、这两天考完试我再调一调, |
|
|
|
|
|
|
|
|
|
|
|
那个数有上限 只能到10us
|
|
|
|
|
|
为什么没法实现?你不应该这么问问题
|
|
|
|
|
|
1us的延迟,还是用软件延时,尽管不准。用sysTICK如果中断函数指令较多的话,很可能结果是程序还在中断函数中运行,下一次的中断标记位又被置位了,刚退出又进入,程序就相当于死了,或者意义不大了。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2961 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2463 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2331 浏览 0 评论
2455 浏览 1 评论
1674 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 04:25 , Processed in 0.824579 second(s), Total 65, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
17789