www.亚洲男人天堂_欧美最顶级的aⅴ艳星_国产精品免费网站_欧美日韩在线一区_欧美床上激情在线观看_日韩av色在线_国产精品亚洲综合天堂夜夜_欧美做爰性生交视频_国产成人高潮免费观看精品_久久天天躁夜夜躁狠狠躁2022_国产美女久久精品香蕉69_亚洲专区在线视频_国产精品夜间视频香蕉_国产成人综合一区二区三区_国产精品69av_岛国av午夜精品

網絡消費網 >  5G > > 正文
第4課:UART串口編程
時間:2021-12-11 22:22:04
首先明確一點:我們學習的串口是異步串口。在傳輸時,他們各自有各自的時鐘。就是我們說的波特率。

我們學習的RS232與UART的區別是,UART使用標準的TTL/COMS電平 進過一個芯片使它的高低電平從TTL中0與3.3V 變成了 低電平5v到15v

高電平-3v到-12v。

首先說一下串口的數據幀格式。它由一個開始位,數據位,校驗位和停止位組成。

平時數據處于1狀態。

當要開始發送時,從UART改變TxD數據變成0狀態1個位的時間,在接受端到0之后的1.5位的時間,接收端開始接受數據。

數據位分為5,6,7,8。四種類型的數據位。之后就是校驗位站1位,可以設置也可以不設置。最后的是停止位??梢允?位,1.5位,2位。這個是高電平1。

UART可以用中斷或DMA來工作。它有3個單獨的通道。它由4部分組成,發送器,接收器,波特率發生器,控制邏輯組成。

這些部分的設置都是通過寄存器來實現的。

發送的過程是這樣的,UART只能通過shifter一位一位的來發數據。它先把要發的數據放到它的緩存FIFO里,當然緩存也可以取消。然后放入shifter里面來發出去。接受也是一樣的。通過緩存來接受,然后再通過接受的shifter來接。

具體繼電器的設置主要由以下幾個:

ULCON 邏輯數據楨格式控制器

UCON 串口的控制繼電器

UFCON FIFO控制寄存器

UMCON 串口MODEN控制器 (可以控制AFC 自動流控制)

以下是狀態寄存器,用來確定狀態的,比如說shifter發送器的狀態,接收器的狀態。

UTRSTAT 接受發送控制器

UERSTAT 錯誤狀態寄存器

UFSTAT FIFO狀態寄存器

最后一個單獨的設置寄存器,它用來設置波特率

UBRDIV 波特率發生器

以下來寫個簡單的串口例子。

它不使用FIFO 中斷 而直接用shifter收發,采用輪詢的方式來檢測數據是否發送或被接受。然后通過minicom向開發板發送1表示亮燈,發送2表示熄燈。

文件總共是7個 一個crt0.s main.c addr.h uart.h uart.c uart.lds makefile

crt0.s 是關閉watchdog 并跳轉到mian 之后用個deadloop。

.text.globl _start_start:ldrr0, =0x53000000 @ WATCHDOG closemovr1, #0x0strr1, [r0]ldr sp, =1024*4 @set stack,but the capitcy of cache is only 4k

bl mainhalt_loop: b halt_loop

第2個是addr.h用來寫寄存器的宏定義。

#ifndef ADDR_H#define ADDR_H#define GPECON (*(volatile unsigned int *)0x56000040)#define GPEDAT (*(volatile unsigned int *)0x56000044)

#define GPE12_out (1<<(12*2))#define GPE13_out (1<<(13*2))

#define GPHCON (*(volatile unsigned int *)0x56000070)#define GPHUP (*(volatile unsigned int *)0x56000074)#define ULCON0 (*(volatile unsigned int *)0x50000000)#define UCON0 (*(volatile unsigned int *)0x50000004)#define UFCON0 (*(volatile unsigned int *)0x50000008)#define UMCON0 (*(volatile unsigned int *)0x5000000C)#define UTRSTAT0 (*(volatile unsigned int *)0x50000010)#define UFSTAT0 (*(volatile unsigned int *)0x50000018)#define UTXH0 (*(volatile unsigned int *)0x50000020)#define URXH0 (*(volatile unsigned int *)0x50000024)#define UBRDIV0 (*(volatile unsigned int *)0x50000028)

#endif

第3個文件來寫uart.h,這是個我們的功能

#ifndef UART_H#define UART_Hvoid uart_init(); //初始化繼電器

void uart_write(char *a); //串口寫一行

void uart_read(char *a,int n);//串口讀n個字

void uart_read_line(char *a); //讀一行

void led_on(); //開燈

void led_off();//關燈#endif

第4個文件具體來寫uart.C

#include"uart.h"#include"addr.h"#define UART_CLK 50000000 //我們用的是PCLK 50MHz#define UART_BAUD_RATE 115200 //比特率是115200#define UART_BRD (int)(UART_CLK/(UART_BAUD_RATE *16))-1 //計算公式的宏void uart_init(){GPHCON |=0xa0;//這個是TXD0與RXD0的設置,他們用的是GPH2和3復用的特殊GPHUP = 0x0c;//功能,所以還要在這設置上拉電阻,以區別高低電平的。ULCON0 = 0x3; //楨格式的設置8個數據位,無校驗UCON0 = 0x5;//選擇的是中斷與輪詢模式UFCON0 = 0;//不設FIFOUMCON0 = 0;//不設AFCUBRDIV0 = UART_BRD; //設置波特率}

void uart_write(char *a){do{while(!(UTRSTAT0&2)); //UTRSTAT0的第2位是1的話表示發送數據的shifter內的數據已經被發送了,現在數據為空。如果里面的數據沒有空的話?。║&2)會一直是1,造成一直循環,知道出現UTRSTAT0第2位為1的情況。

UTXH0 = *(a++); //發送寄存器只能一次最多發8位}while(*a!=\0);}

void uart_read(char *a,int n){do{

while(!(UTRSTAT0&1));//第1位為1表示shifter內的數據已經有了,可以讀了,如果為0的話將一直循環,知道有數據可讀。*(a++) = (char)URXH0;n--;}while(n>0);}

void uart_read_line(char *a){do{

while(!(UTRSTAT0&1));*(a++) = URXH0;}while(*a!=\0);}

void led_on(){ GPEDAT = 0;}

void led_off(){GPEDAT = (3<<12);}

第5個文件main.c文件

#include"addr.h"#include"uart.h"

int main(){char *t = "Welcome to bootloader...\r\n";//這里只能用指針來傳遞,指針指向常量字符串的首地址傳入。char *t1 = "press 1 to light loop on\r\n";char *t2 ="press 2 to light loop off\r\n";char *t3 ="please input your choice\r\n";char r[10] ;//這里指針務必用數組來分配,一個沒有malloc函數。GPECON = GPE12_out|GPE13_out;uart_init();uart_write(t);uart_write(t1);uart_write(t2);uart_write(t3);while(1){uart_read(r,1);UTXH0 = *r;//這里是為了回顯switch(*r){case 1:led_on();break;case 2:led_off();break;}}return 0;}

第6個連接文件

SECTIONS {. = 0x00; .text : { *(.text) }.rodata ALIGN(4) : {*(.rodata)} .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.bss) *(COMMON) }}最后介紹下makefile比較好的寫法。

SRC := $(wildcard *.c) //設定直接變量SRC,$(wildcard )表示使用通配符OBJC := $(patsubst %.c,%.o,$(SRC)) //表示把SRC里的值是.c結尾的換成.o結尾的結果保存到OBJC中

uart.bin:uart.elfarm-linux-objcopy -O binary -S $^ $@//表示$@目標文件$^所有依賴arm-linux-objdump -D -m arm $^ >uart.disuart.elf:crt0.o $(OBJC)arm-linux-ld -T uart.lds $^ -o $@%.o:%.c //任意.o的依賴為.carm-linux-gcc -c $^ -o $@%.o:%.sarm-linux-gcc -c $^ -o $@

clean:rm -f uart.bin uart.dis uart.elf uart.o crt0.o main.o

然后用jtag燒入0x0內部SRAM的4k容量內,并在minicom里輸入數據來控制led

關鍵詞: UART串口編

版權聲明:
    凡注明來網絡消費網的作品,版權均屬網絡消費網所有,未經授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明"來源:網絡消費網"。違反上述聲明者,本網將追究其相關法律責任。
    除來源署名為網絡消費網稿件外,其他所轉載內容之原創性、真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考并自行核實。
熱文

網站首頁 |網站簡介 | 關于我們 | 廣告業務 | 投稿信箱
 

Copyright © 2000-2020 www.yushuoyun.cn All Rights Reserved.
 

中國網絡消費網 版權所有 未經書面授權 不得復制或建立鏡像
 

聯系郵箱:920 891 263@qq.com

備案號:京ICP備2022016840號-15

營業執照公示信息

www.亚洲男人天堂_欧美最顶级的aⅴ艳星_国产精品免费网站_欧美日韩在线一区_欧美床上激情在线观看_日韩av色在线_国产精品亚洲综合天堂夜夜_欧美做爰性生交视频_国产成人高潮免费观看精品_久久天天躁夜夜躁狠狠躁2022_国产美女久久精品香蕉69_亚洲专区在线视频_国产精品夜间视频香蕉_国产成人综合一区二区三区_国产精品69av_岛国av午夜精品

        免费看精品久久片| 黄色成人av网| 亚洲美女av黄| 久久久亚洲欧洲日产国码αv| 久久国产黑丝| 日韩一区二区免费看| 欧美日本中文| 亚洲国产精品电影在线观看| 国产亚洲福利社区一区| 韩曰欧美视频免费观看| 欧美激情第三页| 久久欧美肥婆一二区| 一区二区精品在线| 亚洲国产精品日韩| 欧美国产视频在线观看| 欧美日韩一级大片网址| 国产精品九九久久久久久久| 亚洲大片精品永久免费| 国产午夜精品视频免费不卡69堂| 国产精品久久久久三级| 欧美资源在线| 亚洲视频中文| 欧美成年人网| 亚洲一区在线免费观看| 久久精品主播| 欧美经典一区二区| 亚洲图片欧洲图片av| 在线观看欧美视频| 国产亚洲成人一区| 欧美成人一二三| 韩日精品中文字幕| 在线视频观看日韩| 国产精品亚洲视频| 欧美亚男人的天堂| 午夜激情一区| 悠悠资源网亚洲青| 欧美激情一区二区三区在线视频| 一区二区激情| 亚洲一区观看| 国产精品视频九色porn| 欧美中文字幕第一页| 国产三级欧美三级日产三级99| 欧美bbbxxxxx| 久久久久欧美精品| 亚洲美女免费精品视频在线观看| 欧美日本在线| 黄色一区二区三区四区| 欧美刺激午夜性久久久久久久| 欧美福利电影在线观看| 久热这里只精品99re8久| 性视频1819p久久| 午夜伦欧美伦电影理论片| 欧美午夜在线| 亚洲欧美日韩精品综合在线观看| 蜜桃av一区二区三区| 伊人色综合久久天天五月婷| 欧美人牲a欧美精品| 欧美日韩国产123| 亚洲第一区在线观看| 欧美日一区二区在线观看| 国产午夜亚洲精品理论片色戒| 亚洲调教视频在线观看| 亚洲精品1区| 欧美成人国产| 1024国产精品| 国产精品久久久久久亚洲调教| 香蕉乱码成人久久天堂爱免费| 国产一区二区精品久久99| 亚洲狠狠丁香婷婷综合久久久| 国产欧美日韩精品在线| 亚洲国产欧美国产综合一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美a级一区| 国产亚洲一级高清| 欧美日韩成人| 欧美在线亚洲一区| 美女免费视频一区| 欧美在线免费观看| 亚洲桃色在线一区| 精品不卡一区| 亚洲一区免费网站| 欧美日韩一区在线观看视频| 狠狠色丁香婷综合久久| 精品va天堂亚洲国产| 在线观看一区二区精品视频| 美国三级日本三级久久99| 伊人狠狠色丁香综合尤物| 亚洲精品日韩在线观看| 夜夜嗨一区二区| 亚洲三级免费电影| 狠狠干综合网| 亚洲小视频在线| 欧美色欧美亚洲高清在线视频| 蜜桃久久av| 日韩一区二区免费看| 精品动漫一区| 午夜视黄欧洲亚洲| 欧美精品在线一区二区| 国产综合久久久久久鬼色| 国产网站欧美日韩免费精品在线观看| 亚洲三级国产| 欧美午夜宅男影院| 午夜一区二区三区在线观看| 欧美精品一区二区视频| 国产精品国产| 欧美精品99| 亚洲伊人久久综合| 久久综合狠狠综合久久综合88| 香蕉乱码成人久久天堂爱免费| 久久精品国产99精品国产亚洲性色| 午夜伦欧美伦电影理论片| 欧美va亚洲va香蕉在线| 国产日本欧美一区二区三区| 欧美另类久久久品| 亚洲免费婷婷| 亚洲欧美激情视频| 亚洲精品欧美日韩| 欧美日韩免费区域视频在线观看| 国产精品美女久久久久aⅴ国产馆| 久久久噜噜噜久久人人看| 亚洲人成在线观看网站高清| 日韩一区二区精品葵司在线| 欧美精品一区二区三区蜜臀| 激情五月***国产精品| 亚洲性xxxx| 午夜老司机精品| 国产日本亚洲高清| 欧美大片免费观看在线观看网站推荐| 欧美黑人多人双交| 久久久久久久一区二区三区| 影院欧美亚洲| 国产欧美欧美| 伊人久久亚洲美女图片| 亚洲私拍自拍| 亚洲自拍偷拍视频| 欧美电影免费网站| 亚洲精品乱码久久久久久| 欧美日韩久久| 香蕉免费一区二区三区在线观看| 久久亚洲一区| 午夜在线视频观看日韩17c| 亚洲男女毛片无遮挡| 欧美日韩一区二区在线观看视频| 亚洲免费伊人电影在线观看av| 一区二区三区视频在线播放| 欧美在线免费视屏| 91久久久在线| 欧美日韩播放| 一区在线播放视频| 好吊色欧美一区二区三区视频| 欧美亚洲三区| 国产亚洲精品bt天堂精选| 欧美成人午夜剧场免费观看| 另类人畜视频在线| 国产日本欧美视频| 国产中文一区| 欧美一区二区福利在线| 亚洲精品久久久久中文字幕欢迎你| 亚洲精品一区在线观看| 欧美一站二站| 亚洲大片在线观看| 国模精品一区二区三区| 欧美日韩另类国产亚洲欧美一级| 亚洲欧洲精品一区二区| 亚洲无线视频| 欧美一区激情| 日韩视频在线观看国产| 久久不射电影网| 一区二区三区日韩| 久久频这里精品99香蕉| 亚洲人成网在线播放| 国产精品资源| 狠狠爱www人成狠狠爱综合网| 亚洲国产日韩综合一区| 久久精品亚洲一区| 国产精品久久九九| 国产精品婷婷| 久久综合狠狠综合久久综合88| 一区二区三区黄色| 亚洲一区二区三区国产| 国产精品扒开腿爽爽爽视频| 午夜在线精品| 一区免费视频| 亚洲午夜在线观看视频在线| 亚洲国产欧美另类丝袜| 国产美女精品人人做人人爽| 一区二区欧美日韩| 国产日韩欧美另类| 性刺激综合网| 欧美三级精品| 久久久av水蜜桃| 午夜精品区一区二区三| 欧美激情精品久久久久久黑人| 欧美日韩一区二区精品| 国产精品久久国产三级国电话系列| 欧美日韩中文精品| 狠狠88综合久久久久综合网| 亚洲国产精品一区二区第一页| 欧美成人免费网| 亚洲少妇在线| 亚洲精选中文字幕| 欧美福利影院| 国产精品久久久久高潮| 国产视频一区在线观看一区免费| 国产精品夜夜夜一区二区三区尤| 国产欧美精品va在线观看| 欧美chengren| 欧美在线欧美在线| 欧美日本在线一区| 性色av一区二区三区红粉影视| 欧美在线观看视频一区二区三区| 亚洲精品九九| 亚洲福利视频免费观看| 91久久久一线二线三线品牌| 欧美一区三区二区在线观看| 国产精品日日做人人爱| 国产亚洲欧洲997久久综合| 久久精品视频导航| 久久久久久综合网天天| 欧美女激情福利| 久久精品免费| 欧美天堂亚洲电影院在线观看| 亚洲免费综合| 久久久夜精品| 亚洲国产高清自拍| 午夜国产不卡在线观看视频| 中文亚洲免费| 亚洲第一网站免费视频| 亚洲国产欧美日韩精品| 女女同性女同一区二区三区91| 欧美无砖砖区免费| 一区二区欧美视频| 在线精品视频一区二区三四| 夜夜嗨av色综合久久久综合网| 亚洲人成久久| 午夜精品亚洲一区二区三区嫩草| 免费欧美在线视频| 亚欧美中日韩视频| 亚洲伦理一区| 99视频有精品| 狠狠色狠狠色综合日日五| 欧美日韩免费区域视频在线观看| 欧美国产视频在线| 日韩一级黄色av| 久久黄色级2电影| 亚洲免费高清视频| 亚洲女人天堂成人av在线| 夜夜嗨av一区二区三区网站四季av| 欧美人与禽性xxxxx杂性| 欧美午夜精品一区| 亚洲日本中文字幕免费在线不卡| 国产日韩高清一区二区三区在线| 一区二区三区国产在线观看| 99国产精品99久久久久久| 久久er精品视频| 欧美日韩一区国产| 久久另类ts人妖一区二区| 亚洲午夜视频在线观看| 欧美激情一区二区三区蜜桃视频| 野花国产精品入口| 欧美日韩一区二区三| 久久亚洲欧美| 亚洲一区二区三区色| 久久女同互慰一区二区三区| 欧美综合77777色婷婷| 亚洲高清在线播放| 99re6这里只有精品视频在线观看| 久久精品国产999大香线蕉| 欧美日韩一区二区精品| 欧美高清视频一二三区| 国产精品va在线| 亚洲精华国产欧美| 激情综合自拍| avtt综合网| 最新国产乱人伦偷精品免费网站| 亚洲欧美中文另类| 亚洲国产va精品久久久不卡综合| 欧美多人爱爱视频网站| 亚洲伊人久久综合| 新狼窝色av性久久久久久| 免费成人av在线看| 伊人精品久久久久7777| 亚洲欧美另类久久久精品2019| 一区二区亚洲精品| 国产日产高清欧美一区二区三区| 国产欧美亚洲一区| 亚洲黄色视屏| 1000部国产精品成人观看| 一区二区av在线| 国产亚洲欧美日韩精品| 国产精品视频免费观看| 久久九九国产精品| 欧美精品麻豆| 免费观看亚洲视频大全| 欧美一区二区在线免费观看| 欧美午夜视频一区二区| 欧美成人免费播放| 国产欧美一区二区色老头| 欧美一区二区在线观看| 国产尤物精品| 亚洲美女黄色| 欧美在线视频免费| 国产精品久久久久久av福利软件| 久久久综合免费视频| 国产三级欧美三级日产三级99| 先锋影音久久久| 欧美乱妇高清无乱码| 欧美高清日韩| 国产精品视频网| 蘑菇福利视频一区播放| 欧美在线亚洲| 欧美精品一区二区蜜臀亚洲| 这里只有精品视频在线| 亚洲欧美日韩国产一区| 亚洲国产精品va在看黑人| 伊人成人在线视频| 亚洲午夜激情网站| 麻豆精品视频在线| 欧美精品三级日韩久久| 99热在这里有精品免费| 欧美日韩精品一区二区| 亚洲二区在线| 欧美在线亚洲一区| 亚洲一线二线三线久久久| 伊甸园精品99久久久久久| 国产精品久久久99| 亚洲精品一二三| 久久av一区二区三区漫画|