找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3866|回復(fù): 3
收起左側(cè)

基于stm32f103r6 SysTick定時(shí)器的1秒鐘源程序

[復(fù)制鏈接]
ID:453761 發(fā)表于 2020-4-6 14:20 | 顯示全部樓層 |閱讀模式
#include "delay.h"
#include "sys.h"
static u8  fac_us=0;        
static u16 fac_ms=0;               
void delay_init()
{
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);   
        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;                       
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
        SysTick->VAL =0X00;                              
}
void delay_ms(u16 nms)
{
        u32 temp;
        SysTick->LOAD=(u32)nms*fac_ms;
        SysTick->VAL =0x00;
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
        do
        {
            temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
        SysTick->VAL =0X00;
}

SysTick定時(shí)器的1秒鐘設(shè)計(jì)與實(shí)現(xiàn).7z

179.98 KB, 下載次數(shù): 29, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

ID:737501 發(fā)表于 2020-5-7 18:47 | 顯示全部樓層
請(qǐng)問(wèn)一下,為什么程序沒(méi)有錯(cuò),用proteus卻仿真不了systick延時(shí)呢,
led1=0;//點(diǎn)亮led1
delay_ms(1000);
led2=0;//點(diǎn)亮led2

中間仿真完全看不到延時(shí),兩個(gè)燈就都亮了
請(qǐng)問(wèn)這是怎么回事?
回復(fù)

使用道具 舉報(bào)

ID:737501 發(fā)表于 2020-5-7 18:49 | 顯示全部樓層
還有就是,如果用我自己寫的延時(shí)的話就可以用,但是延時(shí)時(shí)間不精確,唯獨(dú)使用systick延時(shí)程序就沒(méi)用。難受啊
回復(fù)

使用道具 舉報(bào)

ID:256945 發(fā)表于 2021-4-3 17:38 | 顯示全部樓層
學(xué)單片機(jī)的小銘 發(fā)表于 2020-5-7 18:47
請(qǐng)問(wèn)一下,為什么程序沒(méi)有錯(cuò),用proteus卻仿真不了systick延時(shí)呢,
led1=0;//點(diǎn)亮led1
delay_ms(1000);
...

你解決了嗎,我也是沒(méi)法仿真,led常亮,但是端口處會(huì)有紅藍(lán)光標(biāo)閃爍表示電平變化
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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