历史上的今天
今天是:2024年12月24日(星期二)
2018年12月24日 | STM32 Systick定时器在实现1us延时的问题与解决
2018-12-24 来源:eefocus
问题:
使用systick_config()函数来实现计数,这个函数在下面代码中的 SysTick_CTRL_TICKINT_Msk 开启了中断。不论系统时钟为72Mhz或36Mhz若设置STM32每10us进入一次中断,计时是可以的;而每1us进入中断,由于中断指令较多,那么程序就会困在中断里出不来。
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
解决:
尽量不使用中断计时,注释掉Systick_Config()中的SysTick_CTRL_TICKINT_Msk ,或者在delay函数中不使用Systick_Config(),直接自己加载数值。
史海拾趣
|
1. 什么是RF? 答:RF 即Radio frequency 射频,主要包括无线收发信机。 2. 当今世界的手机频率各是多少(CDMA,GSM、市话通、小灵通、模拟手机等)?   ...… 查看全部问答> |
|
TH58NVG6D2ETA20 的nand flash要求1KB 24 bit ECC,如果我用512B 12 bit ECC代替是否会有风险,谢谢~~ nand flash的bit error rate跟那些因素相关?… 查看全部问答> |
|
请问大家,wince要显示SD盘符,sd的驱动运行到什么阶段? 是 驱动只要把sd controller初始化正确,注册hostcontroller成功, 还是在对sd卡有读操作,读取信息后才会出现盘符?? 谢谢!… 查看全部问答> |
|
安装了EVC 4 + SP 4,CE 5 SDK,但调试选项里的调试目标只有CE5 SDK带的模拟器,却没有DEVICE的选项,不知何解? 还安装了PPC 2003 SDK,设备和模拟器都工作正常。 感谢!… 查看全部问答> |
|
STM32的数据手册是根据2007年11月英文第四版翻译而成。英文原文下载地址:http://www.st.com/stonline/products/literature/ds/13586.pdfSTM32的技术参考手册是根据2007年11月英文第二版翻译而成。英文原文下载地址:http://www.st.com/stonli ...… 查看全部问答> |
|
在万利板子上用I2C例程5(经万利修改),单步不可以运行,到 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));这一步就等待,连续运行时,有时候好,有时候坏,坏的时候也是到这个地方等待 翻遍了 ...… 查看全部问答> |
|
用ST触摸库做了几款产品了, 在办公室测试没有问题, 但是到车间生产的时候灵敏度就明显下降 目前总出货量已经超过8K了,也没有接到相关投诉,所以我想是不是我们车间特有的什么干扰造成的 想问问其他TX有没有这样的问题??怎么解决的?? 谢谢!… 查看全部问答> |




