<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM學(xué)習《六》——從頭文件開(kāi)始自己動(dòng)手設置STM32串口通訊

ARM學(xué)習《六》——從頭文件開(kāi)始自己動(dòng)手設置STM32串口通訊

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
運用STM32的庫函數時(shí),有時(shí)候為了看懂一句語(yǔ)句需要翻遍整個(gè)頭文件,找到頭文件中預定義的名字到底代表的是什么意思,具體寄存器設置的數值是多少,相當麻煩。我花了一天的時(shí)間才明白串口設置的具體過(guò)程,只是庫函數想的比較周全。下面是我調試好的串口設置程序,頭文件是我自己定義的,舍去了庫文件中繁瑣的結構體定義……

首先定義頭文件:

本文引用地址:http://dyxdggzs.com/article/201611/318955.htm

/

RCC_CFGR &= (uint32_t)0xF8FF0000;

RCC_CR &= (uint32_t)0xFEF6FFFF;//

RCC_CR &= (uint32_t)0xFFFBFFFF;//

RCC_CFGR &= (uint32_t)0xFF80FFFF;//

RCC_CIR = 0x00000000;/

RCC_CR |=0x00010000;//

do

{

HSEStatus = RCC_CR & 0x00020000;

StartUpCounter++;

} while((HSEStatus == 0) && (StartUpCounter != 0x0500));

if ((RCC_CR & 0x00020000) != 0)

{

HSEStatus =0x01;

}

else

{

HSEStatus =0x00;

}

if (HSEStatus ==0x01)

{

RCC_CFGR |=0x00000000;//

RCC_CFGR |=0x00000000;//

RCC_CFGR |=0x00000000;//

RCC_CFGR &=(~(0x00010000 | 0x00020000 | 0x003C0000));

RCC_CFGR |= 0x00010000 | 0x00020000 | 0x000C0000;//

RCC_CR |= 0x01000000;//

while((RCC_CR & 0x02000000) == 0)//

{

}

RCC_CFGR &=~0x00000003;

RCC_CFGR |=0x00000002; //

while ((RCC_CFGR &0x0000000C) !=0x08) //

{

}

}

else

{while (1)

{

}

}

}

設置好時(shí)鐘就可以串口初始化了:

void stm32_UsartSetup ()//串口初始化

{

RCC_APB2ENR|=0x00004000;// enable clock for USART1

RCC_APB2ENR|=0x00000001;//復用功能IO時(shí)鐘使能

RCC_APB2ENR|=0x00000004;//端口A(yíng)時(shí)鐘使能

GPIO_PORTA_CRH&=~(0x00000FF0);// Clear PA9, PA10

GPIO_PORTA_CRH|=0x000000B0;// USART1 Tx (PA9)alternate output push-pull

GPIO_PORTA_CRH|=0x00000400;// USART1 Rx (PA10) input floating

USART1_BRR=0x00000823;////波特率9600/20M

USART1_CR1&=0xFFFFEFFF;// set Data bits

USART1_CR2&=0xFFFFCFFF;// set Stop bits

USART1_CR1&=0xFFFFFBFF;//// set Parity

USART1_CR1|=(0x00000004|0x00000008);// RX, TX enable

USART1_CR1|=0x00002000;// USART enable

}

到此串口設置設置完畢,下面我要和PC機通訊了,我要從上位機通過(guò)串口助手發(fā)送一字節的十六進(jìn)制數,然后下位機(STM32)返回給PC機所發(fā)的一字節數據:

int main()

{

SystemInit0();

stm32_UsartSetup ();

while(1)

{

while(USART1->SR&0x00000020)//等待RXNE置位

{

flag=USART1_DR&0xff;

USART1_DR=flag&0xff;

while((USART1->SR)&0x80==0);//等待發(fā)送完畢

while((USART1->SR)&0x40==0);

flag=USART1->SR;

}

}

}




評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>