imu6xl点灯(C语言)

参考正点原子开发指南

根据原理图可以看出,我们需要设置低电平导通电路。

在原理图上找到LED0,对应IO为GPIO3

IO复用配置

IMX6UL每个引脚都可以复用

在用户手册第30章可以找到IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03这个寄存器,地址为0x020E0068,只用到了低五位,其中前四位为功能引脚,第五位为强制功能引脚(会覆盖前面四位的配置),每个引脚都有专属的强制功能。

IO属性配置

在第30章同一节后面,还有一个中间是PAD的寄存器

它是用来配置我们IO的属性,包括压摆速率、驱动能力等。

这个寄存器只用到了低17位。

HYS:用来使能迟滞比较器,如果需要对输入波形进行整形的话可以使能此位。

PUS:设置上下拉电阻

PUE:当IO作为输入的时候,这个位用来设置IO使用上下拉还是状态保持器。当为0的时候使用状态保持器,当为1的时候使用上下拉。状态保持器在IO作为输入的时候才有用,顾名思义,就是当外部电路断电以后此IO口可以保持住以前的状态。

ODE:当IO作为输出的时候,此位用来禁止或者使能开路输出(0禁止 1使能)

SPEED:IO输出时速度

DSE:IO输出时,设置IO驱动能力

SRE:设置压摆率(IO高低电平跳变所需时间),0低(慢) 1高(快)

寄存器

先看IO框图

地址如图

DR:数据寄存器(一共32位),一个GPIO组最大32个IO,输出模式每个控制一个IO的(高低电平),输出模式就存着每个IO的电平状态

GDIR:方向寄存器,设置IO的输入输出。(0:input 1:output)

PSR:状态寄存器·,读取高低电平,和输入状态的DR寄存器1一样

ICR1、ICR2:中断控制寄存器,ICR1用于配置低16位,ICR2配置高16位

IMR:中断屏蔽寄存器,,用于控制中断的禁止与使能(1使能 0禁止)

ISR:中断标志寄存器,哪个IO发生了中断,ISR寄存器中相应的值就会被置为1。当想清除标志位

时候,向相应位写1就行

EDGE_SEL:设置边沿中断,这个寄存器会覆盖ICR1和ICR2的设置,同样是一个GPIO对应一个位。如果相应的位被置1,那么就相当与设置了对应的GPIO是上升沿和下降沿(双边沿)触发

时钟

IMX6UL的每个外设都有单独的时钟,可以独立使能或禁止。

在用户手册第18章找到对应时钟寄存器

我们只需要设置CCM_CCGR2的26-27位为11即可打开对应时钟。

我们需要一下几步:

①、使能GPIO对应的时钟。

②、设置寄存器IOMUXC_SW_MUX_CTL_PAD_XX_XX,设置IO的复用功能,使其复用为GPIO功能。

③、设置寄存器IOMUXC_SW_PAD_CTL_PAD_XX_XX,设置IO的上下拉、速度等等。

④、第②步已经将IO复用为了GPIO功能,所以需要配置GPIO,设置输入/输出、是否使用中断、默认输出电平等。

#include "led.h"

void led_init(void)//GPIO1_io3
{
    //init -> clock
    CCM_CCGR2 &= ~(0x3 << 26);
    CCM_CCGR2 |= (0x3 << 26);

    //复用GPIO3
    MUX_GPIO3 = (0x5 << 0);

    //GPIO3 -> OUTPUT_ENABLE
    PAD_GPIO3 |= (0x1 << 11);
    GPIO1_GDIR |= (0x1 << 3);
    GPIO1_DR = 0x0;
}

void led_on(void)
{
    GPIO1_DR &= ~(0x1 << 3);
}

void led_off(void)  
{
    GPIO1_DR |= (0x1 << 3);
}

void delay_short(volatile unsigned int n)
{
    while(n--);
}

void delay_us(volatile unsigned int n)
{
    while(n--)
    {
        delay_short(0x7ff);
    }
}
int main()
{
    led_init();
    while(1)
    {
        led_on();
        delay_us(1000);
        led_off();
        delay_us(1000);    
    }
    return 0;
}
相关推荐
森旺电子1 小时前
51单片机仿真摇号抽奖机源程序 12864液晶显示
单片机·嵌入式硬件·51单片机
不过四级不改名6773 小时前
蓝桥杯嵌入式备赛教程(1、led,2、lcd,3、key)
stm32·嵌入式硬件·蓝桥杯
小A1594 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
Rorsion4 小时前
各种电机原理介绍
单片机·嵌入式硬件
善 .7 小时前
单片机的内存是指RAM还是ROM
单片机·嵌入式硬件
超级码农ProMax7 小时前
STM32——“SPI Flash”
stm32·单片机·嵌入式硬件
Asa3197 小时前
stm32点灯Hal库
stm32·单片机·嵌入式硬件
end_SJ9 小时前
初学stm32 --- 外部中断
stm32·单片机·嵌入式硬件
gantengsheng10 小时前
基于51单片机和OLED12864的小游戏《贪吃蛇》
单片机·嵌入式硬件·游戏·51单片机
嵌入式小强工作室11 小时前
stm32 查找进硬件错误方法
stm32·单片机·嵌入式硬件