時鐘設定和uart基本配置

2021-10-02 21:30:22 字數 3086 閱讀 9101

開發板採用友善之臂的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的低頻晶體...