RTEMS-BBB(七):LED点亮

来源:互联网 发布:开源cms php 编辑:程序博客网 时间:2024/06/05 07:36

首先明确硬件地址

AM335X 共4组 GPIO 模块,每组 32 pins  USR0~USR3 对应 GPIO1_21~GPIO1_24  GPIO_OE1: 第一组 GPIO 输出允许(每一位对应一只GPIO引脚,0-输出,1-输入)  GPIO_CLR1: GPIO 引脚清"0" (写 "1" 清0,写"0"无效)  GPIO_SET1: GPIO 引脚置"1" (写 "1" 置1,写"0"无效)  GPIO_OUT1: 输出控制#define GPIO1           0x4804C000#define GPIO_OE1      (GPIO1+0x134)#define GPIO_OUT1     (GPIO1+0x13C)#define GPIO_CLR1     (GPIO1+0x190)#define GPIO_SET1     (GPIO1+0x194)将 GPIO1_21~GPIO1_24 设为输出:    *(int *)GPIO_OE1 &= ~(0xf<<21);4个LED亮:    *(int *)GPIO_CLR1 |= (0xf<<21);    或者    *(int *)GPIO_OUT1 &= ~(0xf<<21);4个LED灭:    *(int *)GPIO_SET1 |= (0xf<<21);    或者    *(int *)GPIO_OUT1 |= (0xf<<21);根据此编写test.c#include <stdlib.h>  #include <stdio.h>  #include <bsp.h>  #define GPIO1           0x4804C000#define GPIO_OE1      (GPIO1+0x134)#define GPIO_OUT1     (GPIO1+0x13C)#define GPIO_CLR1     (GPIO1+0x190)#define GPIO_SET1     (GPIO1+0x194)          rtems_task Init(rtems_task_argument ignored)      {          printf("LED TASK\n");         int i=0;         while (1)          {       for(i=1;i<4;i++)           {             if(i!=4)              {                *(int *)GPIO_OE1 = ~(1<<(21+i));                  rtems_task_wake_after( 100 );                  *(int *)GPIO_OUT1 =  ~(1<<(21+i));                  rtems_task_wake_after( 50 );                  *(int *)GPIO_OUT1 = 0xf<<21;              }            else                i=0;             }       }    /* configuration information */  #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER  #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER       #define CONFIGURE_RTEMS_INIT_TASKS_TABLE  #define CONFIGURE_MAXIMUM_TASKS 10       #define CONFIGURE_INIT       #include <rtems/confdefs.h>  初始化一个TASK,rtems_task_wake_after控制亮灭时间下面将这个led加入到rki的shell中将test.c转为led_cmd.c初始化一个led_command任务,然后设置一下return 0,控制任务运行的时间在local_shell_cmds.c中增加int led_command( int argc, char *argv[]);Add command下添加rtems_shell_add_cmd("led","misc","LED working",led_command);以后的应用也可以这样开发,再生成rki.elf和bone_rki.elf-sdcard.img后烧写到SD卡启动后shell中输入led,启动程序

0 0
原创粉丝点击