開發板採用友善之臂的mini2440
以下**包含了uart配置,uart需要的時鐘配置,fclk:hclk:pclk = 1:2:4=200mhz:100mhz:50mhz
時鐘控制邏輯給整個晶元提供3種時鐘:fclk用於cpu核;hclk用於ahb(advanced high performance bus)匯流排上裝置(高效能模組),比如cpu核,儲存器控制器,中斷控制器,lcd控制器,dma和usb主機模組等;pclk用於apb(advance peripheral bus)匯流排上裝置(低頻寬的周邊外設),比如看門狗,iis,i2c,pwm定時器,mmc介面,adc,uart、gpio,rtc和spi
init.s
.equ sdram_base,
0x30000000
.text
.global _start
_start:
bl disable_watch_dog
ldr sp,
=4096
bl clock_init
bl mem_ctrl_setup
bl copy_steppingstone_to_sdram
ldr pc,
=on_sdram
on_sdram:
ldr sp,
=0x34000000
ldr pc,
=main
loop:
b loop
test:
ldr r0,
=0x56000010
ldr r1,
=0x11400
str r1,
[r0]
ldr r0,
=0x56000014
mov r1, #0
str r1,
[r0]
mov pc, lr
disable_watch_dog:
ldr r0,
=0x53000000
mov r1, #0
str r1,
[r0]
mov pc, lr
copy_steppingstone_to_sdram:
mov r0, #0
add r1, r0, #4096 @1024*4
4k byte
ldr r2,
=sdram_base1:
ldr r3,
[r0]
, #4
str r3,
[r2]
, #4
cmp r0, r1
bne 1b @relative to pc 1 is below,
(b:below f:forward)
mov pc, lr
uart.c
#include
#define gpbcon (*(volatile int *)0x56000010)
#define gpbdat (*(volatile int *)0x56000014)
#define gphcon (*(volatile int *)0x56000070)
#define gphup (*(volatile int *)0x56000078)
#define ulcon0 (*(volatile int *)0x50000000)
#define ucon0 (*(volatile int *)0x50000004)
#define ufcon0 (*(volatile int *)0x50000008)
#define umcon0 (*(volatile int *)0x5000000c)
#define ubrdiv0 (*(volatile int *)0x50000028)
#define utxh0 (*(volatile int *)0x50000020)
#define urxh0 (*(volatile int *)0x50000024)
#define utrstat0 (*(volatile int *)0x50000010)
#define mem_ctl_base (volatile int *)0x48000000
#define mpllcon (*(volatile int *)0x4c000004)
#define clkdivn (*(volatile int *)0x4c000014)
//#define mpllvalue ((0x11 << 12) | (0x01 << 4) | (0x00 << 0)) 測試插口回顯不正確原因未找到
#define mpllvalue ((0x5c << 12) | (0x01 << 4) | (0x02))
//完全手冊上的配置
void
delay
(int time)
}unsigned
char
uart_getc
(void
)void
uart_putc
(unsigned
char c)
void
clock_init()
void
mem_ctrl_setup()
intmain
(int argc,
char
*ar**)
return0;
}
makefile
.phony:clean
bin:
arm-linux-gcc -c init.s -o init.o
arm-linux-gcc -c uart.c -o uart.o
arm-linux-ld -ttext=
0x30000000 init.o uart.o -o uart
arm-linux-objcopy -o binary uart uart.bin
arm-linux-objdump -d -m arm uart > uart.dis
clean:
rm -rf init.o uart.o uart uart.bin uart.dis
基本時鐘配置
task 上一節中提到了延時函式,延時函式的基本原理就是cpu每執行一條語句需要一定固定的時間,而提供這個時間基準的就是微控制器的時鐘訊號。時鐘訊號 於一定的時鐘源,它們是時鐘源經過被選擇和分頻產生的。時鐘源由一定的硬體電路產生,例如晶振和其他各種振盪器。時鐘源類似於人體的心臟 汽車的發動機。而在g...
第7課 系統時鐘和UART實驗
晶振的原理以及作用?晶振是石英晶體諧振器 quartz crystal oscillator 的簡稱,也稱有源晶振,它能夠產生 處理器 cpu 執行指令所必須的時鐘頻率訊號,cpu一切指令的執行都是建立在這個基礎上的,時鐘訊號頻率越高,通常cpu的執行速度也就越快。只要是包含cpu的電子產品,都至少...
MSP430 基本時鐘配置
時鐘對於各種型別微控制器而言相當於我們的心臟,重要性不言而喻!本章 菜鳥渃畔 教大家如何配置430的基本時鐘!使用者指導手冊 晶元管腳手冊 根據使用者知道手冊時鐘 分為3種分別是,lfxt1clk,xt2clk,doc如下圖 1 lfxt1clk 低頻 高頻振盪器 可用於外接32768hz的低頻晶體...