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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2056|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于32單片機(jī)的一個(gè)小問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:978416 發(fā)表于 2022-12-19 21:21 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "stm32f10x.h"

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



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

int main(void)
{
                GPIO_InitTypeDef GPIO_InitStruct;    //定義CPIO初始化類(lèi)型定義
         
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  //使能GPIOA的時(shí)鐘
       
                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低電平使小燈亮起來(lái)
                        delay_ms(1000);
               

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


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

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

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

使用道具 舉報(bào)

沙發(fā)
ID:45879 發(fā)表于 2022-12-20 09:23 | 只看該作者
debug一鍋?zhàn),試?/td>
回復(fù)

使用道具 舉報(bào)

板凳
ID:978416 發(fā)表于 2022-12-20 12:45 | 只看該作者
yueguang3048 發(fā)表于 2022-12-20 09:23
debug一鍋?zhàn),試?/blockquote>

你好,一鍋?zhàn)邮鞘裁矗?/td>
回復(fù)

使用道具 舉報(bào)

地板
ID:830831 發(fā)表于 2022-12-20 17:40 | 只看該作者
我感覺(jué) 32的程序完全沒(méi)法交流,一堆一堆的代碼
回復(fù)

使用道具 舉報(bào)

5#
ID:401564 發(fā)表于 2022-12-20 19:36 | 只看該作者
你先去百度一下"SysTick最大延時(shí)"systick并不是無(wú)限延時(shí)給你的
對(duì)于長(zhǎng)時(shí)間的延時(shí),比如1秒,肯定不是用單純的死等,滴答時(shí)鐘就是用來(lái)作為節(jié)拍用的
比如一個(gè)變量,每1mS就++,到了1000就是1秒了
難道要程序在那干等1秒,什么都不做嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:401564 發(fā)表于 2022-12-20 19:38 | 只看該作者
可以百度一下  uwTick
回復(fù)

使用道具 舉報(bào)

7#
ID:978416 發(fā)表于 2022-12-21 09:29 | 只看該作者
Y_G_G 發(fā)表于 2022-12-20 19:36
你先去百度一下"SysTick最大延時(shí)"systick并不是無(wú)限延時(shí)給你的
對(duì)于長(zhǎng)時(shí)間的延時(shí),比如1秒,肯定不是用單純 ...

好的,謝謝,我去看看
回復(fù)

使用道具 舉報(bào)

8#
ID:978416 發(fā)表于 2022-12-21 09:30 | 只看該作者
Highnose 發(fā)表于 2022-12-20 17:40
我感覺(jué) 32的程序完全沒(méi)法交流,一堆一堆的代碼

是呢,51實(shí)現(xiàn)個(gè)流水燈就那么幾行代碼,這32一堆
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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