找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3852|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

求助STM32程序在proteus跑的不正常

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:163020 發(fā)表于 2022-8-5 20:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
在核心板正常,在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ù)器                      
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:165291 發(fā)表于 2022-12-3 22:01 | 只看該作者
我也遇到這種情況,不知道怎么回事!
回復(fù)

使用道具 舉報

板凳
ID:282074 發(fā)表于 2022-12-23 12:32 | 只看該作者
proteus仿真軟件不行,直接用硬件
回復(fù)

使用道具 舉報

地板
ID:740423 發(fā)表于 2023-1-2 21:25 | 只看該作者
因為核心板有一個低速晶振,systick計時采用的是獨立的低速晶振,核心板上是有這個晶振的,所以你用起來正常,而仿真的時候是沒有的,這個systick以及delay是完全不起作用的,修改的辦法就是將systick計時換為--t計時,在抄代碼的時候盡可能不要采用正點原子的代碼,如果你不懂的話
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表