Haawking DSC28027开发教程——GPIO控制LED
中科昊芯
编辑于 2021年11月15日 09:26
收录于文集
共36篇

LED控制是一个非常经典的嵌入式程序。由于涉及芯片多个基本模块且具有一定趣味性和实用性,该实验非常适合芯片入门。当然LED控制逻辑也可应用于高阶应用和项目开发。本次我们将基于昊芯28027DSP芯片设计一个基本的LED灯控制程序。


1.原理概述

    LED(light emitting diode),发光二极管,常用于氛围装饰和状态指示。除具备一般二极管的特性外,发光二极管在导通时将电能转化成光能,发出彩色的光芒。

2.开发板

    本次实验采用中科昊芯的28027核心板,相关资料可以在官网下载(http://www.haawking.cn/article-detail/NKl9lm9W)

Core_DSC28027_V1.2

 从开发板原理图可知:

(1)GPIO0输出电平为低,LED将会有正向电压差,便可导通发光

(2)TEST键默认弹起,此时GPIO12输入高电平;按下TEST键时,GPIO12输入低电平。

3.程序设计

    Step1:系统初始化

系统主频设置为120MHz。

代码块
clike
自动换行
复制代码
InitSysCtrl();
复制成功

    Step2:GPIO初始化。

GPIO0为LED驱动口,GPIO12TEST键输入口。

代码块
clike
自动换行
复制代码
 EALLOW;
    // led
    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;   //GPIO
    GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;    //output
    GpioDataRegs.GPASET.bit.GPIO0 =1;     //LED off
    //TEST
    GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;   //GPIO
    GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;    //input
    EDIS;
复制成功

    Step3:设计LED灯控制逻辑,reset键按下时,LED灯亮。

代码块
clike
自动换行
复制代码
for(;;)
    {
        if(GpioDataRegs.GPADAT.bit.GPIO12==0)
        {
           GpioDataRegs.GPACLEAR.bit.GPIO0 =1; // LED on
        }
        else
        {
           GpioDataRegs.GPASET.bit.GPIO0 =1;   // LED off
        }
}

复制成功

4.在haawkingIDE中编译代码,通过haawking的HX100V2仿真器烧并运行程序。

5.代码在芯片中运行后,LED灯应为off状态。按下TEST键,LED灯变亮,实验成功。

小贴士:

1.建议GPIO初始化中设定IO初始状态,保证系统外围器件安全。

2.改变GPIO输出状态时,建议采用GPxCLEAR,GPxSET,GPxTOGGLE寄存器。

3.读取GPIO输入状态时,建议使用GPxDAT寄存器。

4.GPIO模块内置硬件滤波功能,可以实现按键去抖功能,有兴趣的可以试一下。