QNX-----IMX6UL最简单的LED点灯程序

                           QNX-----IMX6UL最简单的LED点灯程序

        QNX的应用开发程序比较简单,因为QNX 提供专门的集成开发工具QNX Momentics IDE ,通过该工具可以快速的进行应用程序设计,在QNX程序里,每一个应用都是从main开始的。

         首先看硬件连接,在硬件原理图上,提供两个LED接口,分别接到了SNVS_TAMPER1和SNVS_TAMPER2。因此程序需要对这两个进行设置。

QNX-----IMX6UL最简单的LED点灯程序_第1张图片

     IMX6UL处理器需要把SNVS_TAMPER1和SNVS_TAMPER2配置成IO口,代码如下:

QNX-----IMX6UL最简单的LED点灯程序_第2张图片

 

 主函数如下:

int main(int argc, char *argv[])
{
    _Uintptrt prt;
    uint32_t reg;

    iomux_ctl =  mmap_device_io(0x1000, MX6X_IOMUXC_BASE);
    gpiopinmuxsetswmux(IMX6UL_SWMUX_SNVS_TAMPER1, MUX_CTL_MUX_MODE_ALT5 | MUX_CTL_SION);
    gpiopinmuxsetpadcfg(IMX6UL_SWPAD_SNVS_TAMPER1, MX6X_PAD_SETTINGS_GPIO);
    gpiopinmuxsetswmux(IMX6UL_SWMUX_SNVS_TAMPER2, MUX_CTL_MUX_MODE_ALT5 | MUX_CTL_SION);
    gpiopinmuxsetpadcfg(IMX6UL_SWPAD_SNVS_TAMPER2, MX6X_PAD_SETTINGS_GPIO);
    prt=(_Uintptrt) mmap_device_memory( 0,
                     sizeof(gpioDefinest),
                     PROT_READ|PROT_WRITE|PROT_NOCACHE,
                     0,
                     (0x20AC000) );
    gpioarray[5] = (gpioDefinest*)(prt);
    reg=gpioarray[5]->gpiodata;
    reg |= (1<<1);
    reg |= (1<<2);
    printf("reg %x\r\n",reg);
    gpioarray[5]->gpiodir=reg;
    reg=gpioarray[5]->gpiodir;
    reg |= (1<<1);
    reg |= (1<<2);
    gpioarray[5]->gpiodir=reg;
    printf("reg %x\r\n",reg);
while(1)
{

printf("LED1 0N LED2  OFF\r\n");
     reg=gpioarray[5]->gpiodata;
        reg |= (1<<1);
        reg &= ~(1<<2);
    gpioarray[5]->gpiodata=reg;
    usleep(100000);
    printf("LED1 0FF LED2  ON\r\n");
     reg=gpioarray[5]->gpiodata;
     reg &= ~ (1<<1);

     reg |= (1<<2);
     gpioarray[5]->gpiodata=reg;
     usleep(100000);

}
}

编译生成Led文件,然后拷贝QNX系统上,

在串口超级终端执行./Led 命令,就可以看到两个LED在闪烁,同时LED显示灯状态。

 

你可能感兴趣的:(QNX系统与驱动)