start.s
/** 檔名: start.s
* 描述: 演示串列埠通訊 */
#define wtcon 0xe2700000
#define svc_stack 0xd0037d80.
global _start //
把_start鏈結屬性改為外部,這樣其他檔案就可以看見_start了
_start:
//第1步:關看門狗(向wtcon的bit5寫入0即可)
ldr r0, =wtcon
ldr r1, =0x0
str r1, [r0]
//第2步:設定時鐘
bl clock_init
//第3步:設定svc棧
ldr sp, =svc_stack
//第4步:開/關icache
mrc p15,0,r0,c1,c0,0; //
讀出cp15的c1到r0中
//bic r0, r0, #(1<<12)
//bit12 置0 關icache
orr r0, r0, #(1
<<12) //
bit12 置1 開icache
mcr p15,0,r0,c1,c0,0
;
bl main
//從這裡之後就可以開始呼叫c程式了
//bl led_blink
//led_blink是c語言實現的乙個函式
//彙編最後的這個死迴圈不能丟
b .
main.c
void main(void)}
uart.c
#define gpa0con 0xe0200000#define ulcon0 0xe2900000
#define ucon0 0xe2900004
#define umcon0 0xe290000c
#define ufcon0 0xe2900008
#define ubrdiv0 0xe2900028
#define udivslot0 0xe290002c
#define utrstat0 0xe2900010
#define utxh0 0xe2900020
#define urxh0 0xe2900024
#define rgpa0con (*(volatile unsigned int *)gpa0con)
#define rulcon0 (*(volatile unsigned int *)ulcon0)
#define rucon0 (*(volatile unsigned int *)ucon0)
#define rumcon0 (*(volatile unsigned int *)umcon0)
#define rufcon0 (*(volatile unsigned int *)ufcon0)
#define rubrdiv0 (*(volatile unsigned int *)ubrdiv0)
#define rudivslot0 (*(volatile unsigned int *)udivslot0)
#define rutrstat0 (*(volatile unsigned int *)utrstat0)
#define rutxh0 (*(volatile unsigned int *)utxh0)
#define rurxh0 (*(volatile unsigned int *)urxh0)
//串列埠初始化程式
void uart_init(void)//
串列埠傳送程式,傳送乙個位元組
void uart_putc(char
c)//
串列埠接收程式,輪訓方式,
char uart_getc(void
)
串列埠通訊實現
前段時間編寫了串列埠通訊的 用的是rs 232資料線 include 標準輸入輸出定義 include 標準函式庫定義 include unix 標準函式定義 include include include include include include define dev dev ttys1 d...
串列埠通訊實驗
晶振12mhz,波特率1200,程式啟動後微控制器主動發出hello server,pc使用串列埠助手應答微控制器,當微控制器收到pc發來的資料aah後,將30h 3fh的16個位元組傳送給pc,當51收到e0h時就發40h 5fh的32個位元組資料,若微控制器收到其他資料後,則不做任何修改返回pc...
VC 串列埠通訊實現方式
利用師姐qt2440開發板控制機械臂,串列埠通訊出現問題,找到usb轉串列埠後,任然找不到相應的驅動。初步打算用微控制器實現。1.基於active控制項的方式 mscomm 優點是 直接利用控制項,在串列埠有資料到達時,會促發相應的事件響應函式,然後你可以在實踐響應函式裡,進行資料的讀取。缺點是 資...