日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]C代碼//STM32F103RBT6,包含的啟動(dòng)代碼是STM32F10x.s#include"mytype.h"//GPIOA8是LED0#defineGPIOA_CRL(*(vu32*)(0x40000000+0x10000+0x0800+0x00))//volatileunsignedlong#defineGPIOA_CRH(*(vu32*)(0x40000000+0x1

C代碼

//STM32F103RBT6,包含的啟動(dòng)代碼是STM32F10x.s

#include"mytype.h"

//GPIOA8是LED0

#defineGPIOA_CRL(*(vu32*)(0x40000000+0x10000+0x0800+0x00))//volatileunsignedlong

#defineGPIOA_CRH(*(vu32*)(0x40000000+0x10000+0x0800+0x04))

#defineGPIOA_IDR(*(vu32*)(0x40000000+0x10000+0x0800+0x08))

#defineGPIOA_ODR(*(vu32*)(0x40000000+0x10000+0x0800+0x0C))

#definePERIPH_BASE((u32)0x40000000)//外設(shè)基址

#defineAPB1PERIPH_BASEPERIPH_BASE//APB1總線(xiàn)上的外設(shè)基址

#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)

#defineAHBPERIPH_BASE(PERIPH_BASE+0x20000)//AHB總線(xiàn)外設(shè)基址

#defineFLASH_R_BASE(AHBPERIPH_BASE+0x2000)//flash相關(guān)寄存器基址

#defineFLASH_ACR(*(vu32*)(FLASH_R_BASE+0x00))//閃存控制0x40000000+0x20000+0x2000+0x00

#defineRCC_BASE(AHBPERIPH_BASE+0x1000)//0x40000000+0x20000+0x1000

#defineRCC((RCC_TypeDef*)RCC_BASE)//時(shí)鐘相關(guān)

typedefstruct

{//偏移,寄存器名稱(chēng)

vu32CR;//0x00,時(shí)鐘控制

vu32CFGR;//0x04,時(shí)鐘配置

vu32CIR;//0x08,時(shí)鐘中斷

vu32APB2RSTR;//0x0c,APB2外設(shè)復(fù)位

vu32APB1RSTR;//0x10,APB1外設(shè)復(fù)位

vu32AHBENR;//0x14,AHB外設(shè)時(shí)鐘使能

vu32APB2ENR;//0x18,APB2外設(shè)時(shí)鐘使能

vu32APB1ENR;//0x1c,APB1外設(shè)時(shí)鐘使能

vu32BDCR;//0x20,備份域控制

vu32CSR;//0x24,控制/狀態(tài)

}RCC_TypeDef;

voiddelay(unsignedlongi)//8M內(nèi)部時(shí)鐘的超級(jí)不精確的軟延時(shí),9倍頻后延時(shí)是之前的9倍

{

intj;

while(i--)

{

for(j=0;j<1500;j++)

{}

}

}

voidStm32_Clock_Init(u8PLL)//時(shí)鐘初始化

{

unsignedchartemp=0;

RCC->CR|=0x00010000;//外部高速時(shí)鐘使能HSEON

while(!(RCC->CR>>17));//檢測(cè)第17位HSERDY為1表示外部時(shí)鐘就緒

RCC->CFGR=0X00000400;//APB1=DIV2;APB2=DIV1;AHB=DIV1;

PLL-=2;//抵消2個(gè)單位,參數(shù)匹配

RCC->CFGR|=PLL<<18;//設(shè)置PLL值2~16

RCC->CFGR|=1<<16;//PLLSRCON

FLASH_ACR|=0x32;//FLASH配2個(gè)等待周期,匹配72M系統(tǒng)時(shí)鐘

RCC->CR|=0x01000000;//PLLON

while(!(RCC->CR>>25));//等待PLL鎖定

RCC->CFGR|=0x00000002;//設(shè)置PLL作為系統(tǒng)時(shí)鐘

while(temp!=0x02)//等待PLL作為系統(tǒng)時(shí)鐘設(shè)置成功

{

temp=RCC->CFGR>>2;

temp&=0x03;

}

}

intmain(void)

{

Stm32_Clock_Init(9);//啟用外部8M時(shí)鐘,9倍頻,即72M

{//GPOIA的led初始化

RCC->APB2ENR=1<<2;//打開(kāi)PA時(shí)鐘,

GPIOA_CRH&=0XFFFFFFF0;//準(zhǔn)備配置PA8,PA8是LED0

GPIOA_CRH|=0X00000003;//PA8推挽輸出

GPIOA_ODR|=1<<8;//PA8輸出高,即先關(guān)閉led

}

while(1)

{

GPIOA_ODR=clBit(GPIOA_ODR,8);//第8位置0,點(diǎn)亮led

delay(3000);//用一樣的參數(shù),和之前使用內(nèi)部8M時(shí)鐘的比較效果

GPIOA_ODR=enBit(GPIOA_ODR,8);//第8位置1,熄滅led

delay(3000);

}

}

//目測(cè)led翻轉(zhuǎn)速度差不多是原來(lái)9倍


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉