历史上的今天
今天是:2024年11月01日(星期五)
2021年11月01日 | Linux之ARM(IMX6U)裸机汇编LED驱动实验--驱动编写
2021-11-01 来源:eefocus
1. I.MX6ULL的初始化
①、使能时钟
使能时钟。CCGR0–CCGR6这七个寄存器控制着I.MX6ULL所有外设时钟的使能,为了简单,设置CCGR0–CCGR6这七个寄存器全部为0xFFFFFFFF,相当于使能所有的外设时钟
CCGR0:

CCGR1:

CCGR2:

CCGR3:

CCGR4:

CCGR5:

CCGR6:

汇编使能所有的外设时钟:

②、配置 GPIO_I003 PIN的复用为GPIO
将IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03的bit3-0,设置为0101,这样GPIO_IO03就复用为GPIO

汇编实现:

③、配置 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性
设置寄存器 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性,包括摆率,速度,驱动能力,开漏,上下拉等等
汇编代码实现:

④、配置GPIO功能,设置输入输出
设置GPIO1_GDIR寄存器bit3为1,也就是设置为输出模式


汇编实现:

⑤、设置GPIO_DR寄存器的bit3,1表示输出高电平,0表示输出低电平


汇编实现:

整个汇编代码(.s文件):
.global _start @全局标号
_start:
/*使能所有外设时钟 */
LDR R0 , =0x020c4068 @CCGR0
LDR R1 , =0xffffffff @要想CCGR0写入的数据
STR R1 , [R0] @将R1的值写入到R0中
LDR R0 , =0x020c406c @CCGR1
STR R1 ,[R0]
LDR R0 , =0x020c4070 @CCGR1
STR R1 ,[R0]
LDR R0 , =0x020c4074 @CCGR1
STR R1 ,[R0]
LDR R0 , =0x020c4078 @CCGR1
STR R1 ,[R0]
LDR R0 , =0x020c407c @CCGR1
STR R1 ,[R0]
LDR R0 , =0x020c4080 @CCGR1
STR R1 ,[R0]
/*配置 GPIO_I003 PIN的复用为GPIO
* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 = 0101 =5
* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器的地址为0x020E_0068
*/
LDR R0 , =0x020E0068 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
LDR R1 , =0x5 @要写入的数据
STR R1 , [R0] @将5写入IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03
/*配置 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的电器属性
* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03的地址时0x020E_02F4
* bit0 : 0 低速率
* bit5-3: 110 R0/6 驱动能力
* bit7-6: 10 100MHz速度
* bit11: 0 关闭开路输出
* bit12: 1 使能pull/keeper
* bit15-14: 00 100K下拉
* bit16: 0 关闭hys
* 向寄存器IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03写入 0x10b0
*/
LDR R0 , = 0x020E02F4
LDR R1 , = 0x10b0
STR R1 ,[R0]
/*设置GPIO功能
*设置GPIO1_GDIR寄存器 设置GPIO1_GPIO03为输出
*寄存器GPIO_GDIR的地址是 0x0209C004
* 设置GPIO1_GDIR寄存器bit3为1也就是GPIO1_GPIO03为输出
*/
LDR R0 , = 0x0209C004
LDR R1 , = 0x8
STR R1 ,[R0]
/*打开LED,也就是设置GPIO1_GPIO03为0
*GPIO1_DR 寄存器地址为0x0209C000
*/
LDR R0 , = 0x0209C000
LDR R1 , =0
STR R1 ,[R0]
loop:
b loop
史海拾趣
|
西部安防展/美国安防展/2009美国安防展/安防展/ISC安防展/美国安防展 2009美国西部国际安防产品博览会(ISC) 【展会时间】 2009年4月1日-3日 【展会地点】 美国拉斯维加斯展览中心 【展品范围】 闭路电视、监视器、门路控制、家庭保险设备、摄像设备、安保五金、电池、对讲机、各类锁具、保 ...… 查看全部问答> |
|
请问一下:我想在pda上进行编程实现rs232串口通讯,采用c#开发工具,请问是在wince下好呢还是在Windows Mobile下好?谢谢 如题,一般大家在pda上编程采用什么开发工具?选用什么开发环境?谢谢… 查看全部问答> |
|
在我的程序里有一个数组 unsigned int y[25]={0,1,2,3,6,5,4,0,1,2,3,6,5,4,0,0,1,0,0,1,0,1,0,1,0}; 把他定义在函数外面编译通过 并且和硬件调试好用。 把他定义在函数里面编译通过 可是和硬件调试不好用。 这会是什么原因,是不是分配的空间乱 ...… 查看全部问答> |
|
28035 DSP开发板实验例程和手册全套发布(例程部分之一) TMS320F28035是TI新推出的Piccolo系列DSP之一,它具有很高的性价比和出色的DSP控制性能。对于入门来说,它比2812更适合:单电源供电,主频适中(60MHZ),附带一个浮点运算核,价格也没有2812那样有时贵得离谱。同样具有增强型eCAN、SPI,SCI等 ...… 查看全部问答> |
|
在瞬息万变的市场环境中,率先将产品投放市场是在商战中取胜的关键,因此,产品开发的速度年年加快。为将产品及时推向市场,提高作为系统核心的微控制器的开发效率需求更是逐年高涨。鉴于对更高开发效率的强劲需求,富士通半导体采用全球通用化标 ...… 查看全部问答> |






