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;
}
相关推荐
m0_739312873 小时前
【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
stm32·单片机·嵌入式硬件
嵌入式小章3 小时前
基于STM32的实时时钟(RTC)教学
stm32·嵌入式硬件·实时音视频
TeYiToKu3 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
基极向上的三极管4 小时前
【AD】3-4 在原理图中放置元件
嵌入式硬件
徐嵌4 小时前
STM32项目---水质水位检测
stm32·单片机·嵌入式硬件
徐嵌4 小时前
STM32项目---畜牧定位器
c语言·stm32·单片机·物联网·iot
lantiandianzi4 小时前
基于单片机的老人生活安全监测系统
单片机·嵌入式硬件·生活
东胜物联5 小时前
探寻5G工业网关市场,5G工业网关品牌解析
人工智能·嵌入式硬件·5g
stm32发烧友5 小时前
基于STM32的智能家居环境监测系统设计
stm32·嵌入式硬件·智能家居
hairenjing112313 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word