1、流水燈原理分析
流水燈又叫跑馬燈,實現的效果就是:挨著的led依次點亮熄滅(同時只有1顆led亮的)
2、流水燈編寫(使用迴圈)
led1亮延時 + led2亮延時 + led3亮延時 + 迴圈
4、總結:跟著朱老師一步步做實驗根本不難。
程式設計操控硬體的步驟:1、分析硬體工作原理、2、分析原理圖、3、分析資料手冊、4、找到相關的sfr、5、寫**設定暫存器得到想要的效果。每個硬體都是這樣操控的。
示例**1:
#define gpj0con 0xe0200240
#define gpj0dat 0xe0200244
.global _start
_start:
flah:
//第一步:設定gpj0con控制暫存器,設定方法是直接把所有引腳設定為輸出模式
ldr r0, =0x11111111
ldr r1, =gpj0con
str r0, [r1]
//第二步:點亮led1,其它的滅
ldr r0, =(0<<3)|(1<<4)|(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
//第三步:點亮led2,其它的滅
ldr r0, =(1<<3)|(0<<4)|(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
//第四步:點亮led3,其它的滅
ldr r0, =(1<<3)|(1<<4)|(0<<5)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
bl flah
//延時函式
delay:
ldr r2, =9000000
ldr r3, =0x00
delay_oop:
sub r2, r2, #1
cmp r2, r3
bne delay_oop
mov pc, lr
示例**2—位運算小技巧
#define gpj0con 0xe0200240
#define gpj0dat 0xe0200244
.global _start
_start:
flah:
//第一步:設定gpj0con控制暫存器,設定方法是直接把所有引腳設定為輸出模式
ldr r0, =0x11111111
ldr r1, =gpj0con
str r0, [r1]
//第二步:點亮led1,其它的滅
ldr r0, = ~(1<<3)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
//第三步:點亮led2,其它的滅
ldr r0, = ~(1<<4)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
//第四步:點亮led3,其它的滅
ldr r0, = ~(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//延時
bl delay
bl flah
delay:
ldr r2, =9000000
ldr r3, =0x00
delay_oop:
sub r2, r2, #1
cmp r2, r3
bne delay_oop
mov pc, lr
示例**3—加入led4實現流水燈
#define gpj0con 0xe0200240
#define gpj0dat 0xe0200244
#define gpd0con 0xe02000a0
#define gpd0dat 0xe02000a4
.global _start
_start:
flah:
//第一步:設定gpj0con和gpd0con控制暫存器,設定方法是直接把所有引腳設定為輸出模式
ldr r0, =0x11111111
ldr r1, =gpj0con
str r0, [r1]
ldr r2, =0x11111111
ldr r3, =gpd0con
str r2, [r3]
//第二步:點亮led1,其它的滅
ldr r0, = (0<<3)|(1<<4)|(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//gpd0dat控制led4
ldr r2, = 0b1111
ldr r3, =gpd0dat
str r2, [r3]
//延時
bl delay
//第三步:點亮led2,其它的滅
ldr r0, = (1<<3)|(0<<4)|(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//gpd0dat控制led4
ldr r2, = 0b1111
ldr r3, =gpd0dat
str r2, [r3]
//延時
bl delay
//第四步:點亮led3,其它的滅
ldr r0, = (1<<3)|(1<<4)|(0<<5)
ldr r1, =gpj0dat
str r0, [r1]
//gpd0dat控制led4
ldr r2, = 0b1111
ldr r3, =gpd0dat
str r2, [r3]
//延時
bl delay
//第五步:點亮led4,其它的滅
ldr r0, = (1<<3)|(1<<4)|(1<<5)
ldr r1, =gpj0dat
str r0, [r1]
//gpd0dat控制led4
ldr r2, = 0b1101
ldr r3, =gpd0dat
str r2, [r3]
//延時
bl delay
bl flah
delay:
ldr r2, =9000000
ldr r3, =0x00
delay_oop:
sub r2, r2, #1
cmp r2, r3
bne delay_oop
mov pc, lr
一步步點亮LED之彙編點亮LED
gpj0con埠一共有8個埠,分別記住 gpj0 0 gpj0 7 相關暫存器為gpj0con gpj0dat gpj0con暫存器中設定8個引腳的工作模式 32 8 4,每個引腳分到4位,譬如gpj0 0位bit0 bit3,我們就給 它寫入0001得到輸出模式 1 需要控制的引腳 gpj0 3 ...
一步步點亮led之軟硬體分析
剩下的4顆led燈 正極接 3.3v,負極接soc的乙個引腳 d22 gpj0 3 d23 gpj0 4 d24 gpj0 5 d25 pwmtout1 gpd0 1 因此,為了點亮led,我們可以讓那些對應的引腳為低電平。下面開始分析軟體方面的問題。如何操控這些引腳為低電平?gpio是晶元的引腳,...
一步步學ROS
最近因為看svo的 裡面用到catkin決定要好好看ros,年前學會基本操作。啟動節點 rosrun package name executable name 檢視節點 rosnode list 注 rosout 節點是乙個特殊的節點,通過 roscore 自動啟動 檢視特定節點的資訊 rosnod...