Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26722
  • 博文数量: 3
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-13 01:52
文章分类
文章存档

2016年(2)

2015年(1)

我的朋友

分类: 嵌入式

2016-04-22 21:51:00

很简单,设置控制模块中对应的GPIO寄存器,模式为mode7,用作GPIO,上拉,高电平即可。
AM3358的GPIO大多数都是多功能复用的,通过Control  Mode来管理,但是reference manual里没有列出各引脚服用复用功能对应哪个模式。TI官网提供了一个windows平台的pinmux工具,可以方便的查询引脚复用功能的模式。

还可以查看芯片手册(不是参考手册)。TI的cpu或者MCU都有2本手册,一本是通用的参考手册,另一本是针对具体cpu型号的芯片手册,要查看引脚功能配置,需要查询芯片手册。

我用第三种办法:查看核心板原理图,芯片元件图已经列出了引脚所有的复用功能,比如我们知道LED0由GPMC_A0驱动,根据原理图,GPMC_A0的复用功能如下:
[GPMC_A0/GMII2_TXEN/RGMII2_TCTL/RMII2_TXEN/GPMC_A16/PR1_MII_MT1_CLK/EHRPWM1_TRIPZONE_INPUT/GPIO1_16]
从左往右数依次为MODE0~MODE7,MODE7为GPIO模式,所以LED应当工作在MODE7。

  1. /* led_on.S */
  2. /* #define CTRL_BASE         0x44E10000   */
  3. /* #define GPIO1_BASE        0x4804C000*/
  4. /* TEXT_BESE                 0x80800000 */
  5. /* SPL_BESE                  0x402f0400  */

  6.     ldr r0, =0x44E10840        /* GPMC_A0(GPIO1_16)寄存器 */
  7.     ldr r1, =0x0000001F        /* GPMC_A0(GPIO1_16)寄存器,模式7 */
  8.     str r1, [r0]               /* GPMC_A0(GPIO1_16)寄存器,上拉[4:3]=0b11,模式7,[2:0] = 0b111 */

  9.     ldr r0, =0x4804C134        /* GPIO1 OUT寄存器 */
  10.     ldr r1, =0x00000000         
  11.     str r1, [r0]            /* 设置为输出 , 0 为输出 */

  12.     ldr r0, =0x4804C13C        /* GPIO1 DATAOUT寄存器 */
  13.     ldr r1, =0x00010000        
  14.     str r1, [r0]            /* 设置为高电平 */

  15. halt:
  16.     b halt                    /* 死循环 */

makefile记得指定链接地址为0x402F0400,执行mkmlo led_on.bin,得到MLO,拷贝到SD卡的FAT分区即可。
阅读(3351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~