標(biāo)題:
32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms
[打印本頁]
作者:
luzhenwei
時(shí)間:
2024-12-19 21:48
標(biāo)題:
32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms
32f407單片機(jī)滴答定時(shí)器精準(zhǔn)延時(shí),延時(shí)0ms,寫進(jìn)去后,芯片一通電就發(fā)熱,熱到一定程度就崩潰了,復(fù)位也沒用,
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 ; //重裝載寄存器,最大計(jì)數(shù)值
SysTick->VAL = 0x00 ; //清空計(jì)數(shù)值
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk ; // 開啟倒數(shù)
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&& !(temp & (1<<16))); //等待倒數(shù)到0為止
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk ; // 關(guān)閉計(jì)數(shù)器
SysTick->VAL = 0x00 ; //清空計(jì)數(shù)值
}
作者:
zpwgf
時(shí)間:
2024-12-20 09:23
int main() {
// 假設(shè)你不需要延時(shí)
GPIO_ToggleBits(GPIOF, GPIO_Pin_10);
while (1) {
// 主循環(huán)
}
}
void Delay_ms(uint32_t nTime) {
if (nTime == 0) return; // 直接返回,不執(zhí)行任何延時(shí)
uint32_t delay_ms = 21000; // 確保這個(gè)值適合你的系統(tǒng)時(shí)鐘
SysTick->LOAD = nTime * delay_ms; // 重裝載寄存器
SysTick->VAL = 0x00; // 清空計(jì)數(shù)值
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // 開啟倒數(shù)
// 等待SysTick計(jì)數(shù)器達(dá)到零
while ((SysTick->CTRL & SysTick_CTRL_ENABLE_Msk) && !(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 關(guān)閉計(jì)數(shù)器
SysTick->VAL = 0x00; // 清空計(jì)數(shù)值
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1