完善资料让更多小伙伴认识你,还能领取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如果中断函数指令较多的话,很可能结果是程序还在中断函数中运行,下一次的中断标记位又被置位了,刚退出又进入,程序就相当于死了,或者意义不大了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1980 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1836 浏览 3 评论
4416 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1985 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2489 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:04 , Processed in 0.610972 second(s), Total 62, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号