真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ARMcortexa之串口通信2-創(chuàng)新互聯(lián)

現(xiàn)在開始編程。

在華坪等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、網(wǎng)站建設 網(wǎng)站設計制作專業(yè)公司,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設公司,華坪網(wǎng)站建設費用合理。

先寫一個大的函數(shù):

void main(void)

{

uart_init();

uart_putc('a');  //發(fā)送數(shù)據(jù)

//uart_getc();  //接收數(shù)據(jù)

}

然后分別寫三個小的子函數(shù)

先在宏定義中聲明各個寄存器的地址,然后我們開始使用它們。

#define GPA0CON 0xE0200000

#define UCON0 0xE2900004

#define ULCON0 0xE2900000

#define UMCON0 0xE290000C

#define UFCON0 0xE2900008

#define UBRDIV0 0xE2900028

#define UDIVSLOT0 0xE290002C

#define UTRSTAT0 0xE2900010

#define UTXH0 0xE2900020

#define URXH0 0xE2900024

//下面是串口初始化程序

void uart_init(void)

{

//首先先選擇GPA0CON控制寄存器,這個寄存器的作用是把IO口設置為串口模式

//先把這個寄存器的bit0~bit7清除,再寫入0x22,則Rx Tx就設置成功了。

(*(volatile unsigned int *)GPA0CON) &= ~(0xff<<0);

(*(volatile unsigned int *)GPA0CON) |= 0x00000022;

//然后就是根據(jù)上一章講的,我們來設置ULCON:設置串口的數(shù)據(jù)位,校驗位和停止位

//這個寄存器的[31:7] 沒有功能,這里寫0x3的意思是:

//[1:0] 為11表示八位數(shù)據(jù)位,[2] 為0表示一位停止位,[5:3] 為0表示不需要校驗位,

//[6] 為0表示正常模式(若選擇1則表示紅外模式);

(*(volatile unsigned int *)ULCON0)  = 0x3;

//然后我們再設置UCONn寄存器

//這個寄存器的[1:0] 為01,表示中斷請求或者輪詢方式,[3:2] 為01,表示中斷請求或者輪詢方式

//[10]設置0,選擇PCLK為時鐘來源。剩下很多與中斷有關(guān)的位我們先不需要管,畢竟我們用串口來做實驗,

//不需要中斷,不斷來回檢查就行了。

(*(volatile unsigned int *)UCON0)   = 0x5;

//我們不使用流控,所以直接讓UMCON全都為0,禁止掉。

(*(volatile unsigned int *)UMCON0)  =0;

//我們不使用FIFO模式,所以同樣把它們都設置為0就可以了。

(*(volatile unsigned int *)UFCON0)  =0;

//然后就要計算配置波特率了

//PCLK_PSYS通過時鐘系統(tǒng)分析為66.7MHz

//DIV_VAL = (66700000/(115200*16)-1) = 35.18,余數(shù)0.18

(*(volatile unsigned int *)UBRDIV0) = 35;

//(rUDIVSLOT中的1的個數(shù) = 16*0.18= 2.88 = 3

//然后查閱手冊,得知為0x888

(*(volatile unsigned int *)UDIVSLOT0) = 0x0888;

}

初始化完成了,現(xiàn)在開始寫發(fā)送程序。

void uart_putc(char c)

{

 //與uart功能有關(guān)的狀態(tài)寄存器,記錄了發(fā)送數(shù)據(jù)是否完成

 //這個寄存器的bit3~bit31都沒有功能,

 //第bit2是transmitter empty位,發(fā)送緩沖器里面沒有可供發(fā)送的數(shù)據(jù)的時候置1,有的話置0

 //bit1位是如果有數(shù)據(jù)進入緩沖區(qū)則硬件自動置0,如果進入的數(shù)據(jù)被發(fā)送了出去,硬件再自動置一

 //FIFO就是在發(fā)送器里面存一大堆數(shù)據(jù),所以對于FIFO模式下,檢測每次發(fā)送的數(shù)據(jù)是否發(fā)送了只能用

 //檢測bit1的方法,對于不使用FIFO模式來說,一次只發(fā)送一幀數(shù)據(jù),而且都存在發(fā)送器里面,因此

 //檢測bit2和bit1都可以使用。

 //首先一直循環(huán)檢測,直到置1的時候,才能發(fā)送第二幀數(shù)據(jù)。

 //

 //bit0表示的是接收區(qū)的置位狀態(tài)

while (!((*(volatile unsigned int *)UTRSTAT0) & (1<<1)));

(*(volatile unsigned int *)UTXH0) = c;

}

//會寫發(fā)送程序以后,接收程序就簡單多了。

char uart_getc(void)

{

while (!((*(volatile unsigned int *)UTRSTAT0) & (1<<0)));

return (*(volatile unsigned int *)URXH0);

}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享題目:ARMcortexa之串口通信2-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/dhoscc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部