標(biāo)題: 關(guān)于32單片機的一個小問題 [打印本頁]

作者: egsresrhtrhrtst    時間: 2022-12-19 21:21
標(biāo)題: 關(guān)于32單片機的一個小問題
#include "stm32f10x.h"

/*void delay_us(u32 i)                                //此程序延時1us
{
    u32 temp;
    SysTick->LOAD=9*i;         //設(shè)置重裝數(shù)值, 72MHZ時
    SysTick->CTRL=0X01;         //使能,減到零是無動作,采用外部時鐘源
    SysTick->VAL=0;                //清零計數(shù)器
    do
    {
        temp=SysTick->CTRL;           //讀取當(dāng)前倒計數(shù)值
    }
    while((temp&0x01)&&(!(temp&(1<<16))));     //等待時間到達(dá)
    SysTick->CTRL=0;    //關(guān)閉計數(shù)器
    SysTick->VAL=0;        //清空計數(shù)器
}*/



void delay_ms(volatile u32 i)                                        //此程序延時1ms,,i不能大于1800,暫不知為什么,定時一分鐘可以讓delay_ms(1000)for循環(huán)60次來實現(xiàn),需測試
{
    volatile u32 temp;
    SysTick->LOAD=9000*i;      //設(shè)置重裝數(shù)值, 72MHZ時
    SysTick->CTRL=0X01;        //使能,減到零是無動作,采用外部時鐘源
    SysTick->VAL=0;            //清零計數(shù)器
    do
    {
        temp=SysTick->CTRL;       //讀取當(dāng)前倒計數(shù)值
    }
    while((temp&0x01)&&(!(temp&(1<<16))));    //等待時間到達(dá)
    SysTick->CTRL=0;    //關(guān)閉計數(shù)器
    SysTick->VAL=0;        //清空計數(shù)器
}

int main(void)
{
                GPIO_InitTypeDef GPIO_InitStruct;    //定義CPIO初始化類型定義
         
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  //使能GPIOA的時鐘
       
                GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;           //填入LED連接的引腳
                GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;         //設(shè)置該引腳的模式為推挽輸出
                GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  //設(shè)置引腳的輸出速度
            
                GPIO_Init(GPIOC,&GPIO_InitStruct);    //使用GPIO初始化函數(shù) 初始化 所需要用的引腳
       
                while(1)
                {
                        GPIO_ResetBits(GPIOC,GPIO_Pin_13);  //給PA8低電平使小燈亮起來
                        delay_ms(1000);
               

                        GPIO_SetBits(GPIOC,GPIO_Pin_13);  //給PA8高電平使小燈滅
                        delay_ms(1000);
                       
               
                }
}


這是一個led閃爍的程序,我在stm32f103c6t6上燒錄就可以1s亮滅一次,但是在stm32f103c8t6上燒錄燈就是一直亮,這是怎么回事,是買到了假貨嗎,我看c8t6的絲印確實有點模糊,但是c8t6的芯片延時改成delay_ms(100);的話也能看到閃爍,閃爍的特別快,改成1000就長亮。。。很奇怪啊

51hei圖片_20221219211525.jpg (2.45 MB, 下載次數(shù): 91)

51hei圖片_20221219211525.jpg

作者: yueguang3048    時間: 2022-12-20 09:23
debug一鍋子,試試
作者: egsresrhtrhrtst    時間: 2022-12-20 12:45
yueguang3048 發(fā)表于 2022-12-20 09:23
debug一鍋子,試試

你好,一鍋子是什么?
作者: Highnose    時間: 2022-12-20 17:40
我感覺 32的程序完全沒法交流,一堆一堆的代碼
作者: Y_G_G    時間: 2022-12-20 19:36
你先去百度一下"SysTick最大延時"systick并不是無限延時給你的
對于長時間的延時,比如1秒,肯定不是用單純的死等,滴答時鐘就是用來作為節(jié)拍用的
比如一個變量,每1mS就++,到了1000就是1秒了
難道要程序在那干等1秒,什么都不做嗎?
作者: Y_G_G    時間: 2022-12-20 19:38
可以百度一下  uwTick
作者: egsresrhtrhrtst    時間: 2022-12-21 09:29
Y_G_G 發(fā)表于 2022-12-20 19:36
你先去百度一下"SysTick最大延時"systick并不是無限延時給你的
對于長時間的延時,比如1秒,肯定不是用單純 ...

好的,謝謝,我去看看
作者: egsresrhtrhrtst    時間: 2022-12-21 09:30
Highnose 發(fā)表于 2022-12-20 17:40
我感覺 32的程序完全沒法交流,一堆一堆的代碼

是呢,51實現(xiàn)個流水燈就那么幾行代碼,這32一堆




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1