[DSP编程]

DSC28027开发教程—GPIO控制LED

[复制链接]
486|1
手机看帖
扫描二维码
随时随地手机跟帖
月雾|  楼主 | 2022-7-14 10:29 | 显示全部楼层 |阅读模式
本帖最后由 月雾 于 2022-7-14 11:07 编辑

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

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

2.开发板
本次实验采用中科昊芯的 28027 核心板,相关资料可以在官网下载 (http://www.haawking.cn)。
747e8f2226fe0ca9166cae5dd25d36f51f84f86c.png@942w_327h_progressive.jpg
3da25caabe975b755a6d3c3061c4576f66443f2f.png@659w_293h_progressive.jpg

从开发板原理图可知:

(1)GPIO0输出电平为低时,LED将会有正向电压差,便可导通发光;
(2)TEST键默认弹起,此时GPIO12输入高电平;按下TEST键时,GPIO12输入低电平。

3.程序设计
Step1:系统初始化

系统主频设置为120MHz。
InitSysCtrl(); 


Step2:GPIO初始化。
GPIO0为LED驱动口,GPIO12为TEST键输入口。
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灯亮。
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仿真器烧并运行程序。
01fcc74f8ac31ba35ea64b96a13f90bdaa348acc.png@942w_1047h_progressive.jpg
d643db9c0b6000cd6215fe6ba19b7656779576ac.png@942w_1046h_progressive.jpg
5.代码在芯片中运行后,LED灯应为off状态。按下TEST键,LED灯变亮,实验成功。
058a1309e6295652673814632295ffd049898511.gif

小贴士:

1.建议GPIO初始化中设定IO初始状态,保证系统外围器件安全。
2.改变GPIO输出状态时,建议采用GPxCLEAR,GPxSET,GPxTOGGLE寄存器。
3.读取GPIO输入状态时,建议使用GPxDAT寄存器。
4.GPIO模块内置硬件滤波功能,可以实现按键去抖功能,有兴趣的可以试一下。
微信截图_20220714102302.png

使用特权

评论回复
月蓉小豆包| | 2022-7-14 11:08 | 显示全部楼层
昊芯讲的很专业!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则