標(biāo)題:
求助STM32程序在proteus跑的不正常
[打印本頁]
作者:
梅花君主
時間:
2022-8-5 20:09
標(biāo)題:
求助STM32程序在proteus跑的不正常
在核心板正常,在proteus仿真就用不了,proteus時鐘8MHz,72MHz都不行
int main(void){
Delay_Init();
LED_Init_GPIOC();
while(1){
LED_Flicker();
}
}
void LED_Flicker(void){
Delay_ms(1000);
LED_GPIO_High();
Delay_ms(1000);
LED_GPIO_Low();
}
static u8 fac_us = 0;
static u16 fac_ms = 0;
void Delay_Init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//在misc.c中,選擇外部時鐘源 HCLK/8
fac_us = SystemCoreClock / 8000000;
fac_ms = (u16)fac_us*1000;
}
void Delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //時間加載
SysTick->VAL=0x00; //清空計數(shù)器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //開始倒數(shù)
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達(dá)
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計數(shù)器
SysTick->VAL =0X00; //清空計數(shù)器
}
void Delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms; //時間加載(SysTick->LOAD為24bit)
SysTick->VAL =0x00; //清空計數(shù)器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //開始倒數(shù)
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待時間到達(dá)
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //關(guān)閉計數(shù)器
SysTick->VAL =0X00; //清空計數(shù)器
}
作者:
timeabcd
時間:
2022-12-3 22:01
我也遇到這種情況,不知道怎么回事!
作者:
ksljxxq
時間:
2022-12-23 12:32
proteus仿真軟件不行,直接用硬件
作者:
矜持之花
時間:
2023-1-2 21:25
因為核心板有一個低速晶振,systick計時采用的是獨立的低速晶振,核心板上是有這個晶振的,所以你用起來正常,而仿真的時候是沒有的,這個systick以及delay是完全不起作用的,修改的辦法就是將systick計時換為--t計時,在抄代碼的時候盡可能不要采用正點原子的代碼,如果你不懂的話
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1