标题:
32f407单片机滴答定时器精准延时,延时0ms
[打印本页]
作者:
luzhenwei
时间:
2024-12-19 21:48
标题:
32f407单片机滴答定时器精准延时,延时0ms
32f407单片机滴答定时器精准延时,延时0ms,写进去后,芯片一通电就发热,热到一定程度就崩溃了,复位也没用,
int main()
{
Delay_ms(0);
GPIO_ToggleBits(GPIOF,GPIO_Pin_10);
}
void Delay_ms(uint32_t nTime)
{
uint_t delay_ms=21000;
SysTick->LOAD = nTime*delay_ms ; //重装载寄存器,最大计数值
SysTick->VAL = 0x00 ; //清空计数值
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ; // 开启倒数
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&& !(temp & (1<<16))); //等待倒数到0为止
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk ; // 关闭计数器
SysTick->VAL = 0x00 ; //清空计数值
}
作者:
zpwgf
时间:
2024-12-20 09:23
int main() {
// 假设你不需要延时
GPIO_ToggleBits(GPIOF, GPIO_Pin_10);
while (1) {
// 主循环
}
}
void Delay_ms(uint32_t nTime) {
if (nTime == 0) return; // 直接返回,不执行任何延时
uint32_t delay_ms = 21000; // 确保这个值适合你的系统时钟
SysTick->LOAD = nTime * delay_ms; // 重装载寄存器
SysTick->VAL = 0x00; // 清空计数值
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // 开启倒数
// 等待SysTick计数器达到零
while ((SysTick->CTRL & SysTick_CTRL_ENABLE_Msk) && !(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 关闭计数器
SysTick->VAL = 0x00; // 清空计数值
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1