用汇编点亮一个led
1看原理图GPK4=0,led亮GPK4=1,led灭
2怎么让GPK4输出高低电平(看芯片手册,操作寄存器实现)
配置功能:输入/输出/其他
设置其输出高/低电平
3查看芯片手册
GPK4[19:16]
0000=Input 0001=Output
0010=HostI/FDATA[4] 0011=HSITXREADY
0100=Reserved 0101=DATA_CF[4]
0110=Reserved 0111=Reserved
GPKDAT在第4位写写0就对应GPK4
GPK[15:0][15:0]
Whentheportisconfiguredasinputport,thecorrespondingbitisthepinstate.
Whentheportisconfiguredasoutputport,thepinstateisthesameasthe
correspondingbit.Whentheportisconfiguredasfunctionalpin,theundefined
valuewillberead.
RegisterAddressR/WDescriptionResetValue
GPKCON00x7F008800R/WPortKConfigurationRegister00x22222222
GPKCON10x7F008804R/WPortKConfigurationRegister10x22222222
GPKDAT0x7F008808R/WPortKDataRegisterUndefined
GPKPUD0x7F00880CR/WPortKPull-up/downRegister0x55555555
RegisterAddressR/WDescriptionResetValue
WTCON0x7E004000R/WWatchdogtimercontrolregister0x8021
示例代码如下:
start.S文件
..globl_start
_start:
/*硬件的相关设置:把外设的基地址告诉cpu*/
ldrr0,=0x70000000
orrr0,r0,#0x13
mcrp15,0,r0,c15,c2,4
/*关闭看门狗*/
ldrr0,=0x7E00400
movr1,#0
strr1,[r0]
/*设置GPKCONGPK4作为输出引脚*/
ldrr1,=0x7F008800
movr0,#0x1000
strr0,[r1]
/*设置GPKDAT让GPK4输出0*/
ldrr1,=0x7F008808
movr0,#0
strr0,[r1]
halt:
bhalt
Makefile文件
led.bin:start.o
arm-linux-ld-Ttext0-oled.elfstart.o
arm-linux-objcopy-Obinaryled.elfled.bin
arm-linux-objdump-Dled.elf>led.dis
start.o:start.S
arm-linux-gcc-ostart.ostart.S-c
clean:
rm*.oled.elfled.binled.dis
编译make
将led_on.bin烧写到nandflash中,如同烧写linux类似,将led_on.bin放到images目录下
修改friendlyARM.ini
Action=install
OS=UserBin
UserBin-Image=led_on.bin
点亮四个led灯,示例代码如下:
start.S文件
.globl_start
_start:
/*硬件相关设置*/
ldrr0,=0x70000000
orrr0,r0,#0x13
mcrp15,0,r0,c15,c2,4
/*关闭看门狗*/
ldrr0,=0x7e004000
movr1,#0
strr1,[r0]
/*设置GPKCONGPK4/5/6/7作为输出*/
ldrr1,=0x7F008800
ldrr0,=0x11110000
strr0,[r1]
/*设置GPKDAT让GPM4输出0*/
ldrr1,=0x7F0088080
movr0,#0
loop:
strr0,[r1]
addr0,r0,#1
cmpr0,#16
moveqr0,#0
bldelay
bloop
delay:
movr2,#0x10000000
delay_loop:
subr2,r2,#1
cmpr2,#0
bnedelay_loop
movpc,lr
halt:
bhalt
Makefile文件同上
用c语言来实现点灯
1硬件相关设置
2调用c函数
示例代码如下:
voiddelay(){
volatileinti=0x10000000;
while(i--);
}
intmain(){
inti=0;
volatileunsignedlong*gpkcon=(volatileunsignedlong*)0x7F008800;
volatileunsignedlong*gpkdat=(volatileunsignedlong*)0x7F008808;
*gpkcon=0x11110000;
while(1){
*gpkdat=i;
i++;
if(i==16)
i=0;
delay();
}
return0;
}
.globl_start
_start:
/*硬件相关设置*/
ldrr0,=0x70000000
orrr0,r0,#0x13
mcrp15,0,r0,c15,c2,4
/*关看门狗*/
ldrr0,=0x7E00400
movr1,#0
strr1,[r0]
/*设置栈*/
ldrsp,=8*1024
blmain
Halt:
Bhalt
led.bin:start.oled.o
arm-linux-ld-Ttext0-oled.elfstart.oled.o
arm-linux-objcopy-Obinaryled.elfled.bin
arm-linux-objdump-Dled.elf>led.dis
start.o:start.S
arm-linux-gcc-ostart.ostart.S-c
led.o:led.c
arm-linux-gcc-oled.oled.c-c
clean:
rm*.oled.elfled.binled.dis
相关推荐
STM32-GPIO学习笔记
。。stm3211的GPIO学习笔记.pdf
。。stm3211的GPIO学习笔记讲课教案.docx
。。stm3211的GPIO学习笔记讲课教案.pdf
STM8-库函学习笔记之GPIO相关的函数: 1 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 2 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode); 3 void GPIO_Write(GPIO_...
本篇CSL学习笔记将聚焦于GPIO模块在C55x DSP系列中的应用。 首先,GPIO模块的设计目的是为了核心控制C55x器件中未复用和地址GPIO引脚的功能。这些引脚可以被配置为输入或输出,以适应不同的系统需求。C55x系列包括C...
通过对LM3SLib_GPIO使用笔记的深入学习,不仅可以掌握LM3SXX系列微控制器中GPIO的使用方法,还能了解其内部结构和工作原理,这对于从事嵌入式系统开发的专业人士来说是非常宝贵的知识资源。此外,熟练掌握GPIO的操作...
《树莓派学习笔记——wiringPi GPIO使用详解》 在树莓派的探索与学习过程中,GPIO(General Purpose Input/Output)接口是极其重要的部分,它允许我们直接与外部硬件进行交互。wiringPi是一个专为树莓派设计的C语言...
学习STM32的基本步骤之一是从通用输入输出(GPIO)端口开始。 GPIO端口是STM32微控制器上不可或缺的部分,它们提供了微控制器与外部世界交互的物理接口。每一个GPIO端口实际上都是一组独立的引脚,每个引脚都可以...
STM32学习笔记——GPIO口配置函数详解 STM32学习笔记的第一章节中介绍了与GPIO口相关的函数,这些函数主要用于配置和操作GPIO口。这些函数包括GPIO_Init、GPIO_ReadInputDataBit、GPIO_ReadInputData、GPIO_...
这个"Unit2_BlinkLED"项目可能包含了完成上述步骤的源代码文件,供你参考和学习。通过理解并实践这个项目,你可以进一步掌握树莓派的GPIO编程,为未来更复杂的物联网应用打下坚实基础。同时,这也展示了C#在嵌入式...
Linux学习笔记13---GPIO 中断实验例程
在本文中,我们将深入探讨如何使用STM32F103ZET6开发板进行GPIO(通用输入/输出)的基础开发。STM32是意法半导体(STMicroelectronics...继续深入学习STM32的其他外设和功能,将有助于我们更好地利用STM32的强大性能。
这篇STM32学习笔记主要介绍了GPIO口的寄存器配置以及使用方法。 首先,STM32的GPIO口配置涉及到多个寄存器,包括: 1. GPIOx_CRL:配置寄存器,用于设置低8路GPIO引脚的工作模式和输入输出特性。 2. GPIOx_CRH:...
GPIO,即通用输入/输出(General Purpose Input/Output),是微控制器中的一种基本接口,用于与外部设备进行双向通信。在C55x器件中,GPIO模块提供了对非复用和地址GPIO引脚的控制,使得开发者能够灵活地配置这些...
在STM32的学习过程中,GPIO(General Purpose Input/Output)是最基础也是最常用的部分,它是微控制器与外部世界交互的桥梁。 GPIO的基本概念: GPIO即通用输入输出端口,STM32F103C8T6芯片上有多个GPIO引脚,可以...
"IBM POWERPC405 CPU LINUX下GPIO操作笔记 - 聚沙成塔 - CSDNBlog.mht"这篇文档可能详细介绍了405处理器的GPIO接口及操作步骤,包括如何读写GPIO寄存器和处理中断。 另外,对于2410的GPIO驱动开发,可能涉及的是...
### STM32寄存器学习笔记1_用GPIO输出 #### 一、基础知识与学习动机 对于初学者而言,STM32的学习过程中往往会遇到两大路径:一是基于寄存器的操作,二是利用库函数进行开发。两种方法各有优势,但在实际项目开发...