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单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业1 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能1 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn1 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响2 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
qq_672592752 小时前
电源芯片为什么发热
单片机·嵌入式硬件
天天爱吃肉82182 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
国科安芯2 小时前
抗辐照MCU在精密时频系统中的单粒子效应评估与可靠性验证
单片机·嵌入式硬件·架构·制造·安全性测试
森焱森3 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
czhaii3 小时前
单片机最佳入门多线程示例讲解
c语言·单片机