×
单片机 > 单片机程序设计 > 详情

【PIC32MZ】点亮LED

发布时间:2024-05-20 发布时间:
|

MCU开发第一步都是点亮LED,就跟软件的Hello World一样,先开始第一步吧。

新建一个项目,参考开发环境搭建,具体我就不写了。


1、配置时钟,这个在Clock Diagram中配置,点击Auto-Calculate,输入系统主频即可,最高可达252MHz,这里没有涉及到其他外设,仅设置主频即可。


2、选择服务,由于GPIO只能使用Static,并且系统已经默认配好,那么就不需要自己配置Driver了。在System Services中勾选Clock和Ports即可。

3、配置端口,在PinSetting配置区,我们配置RH0,RH1,RH2三个LED,Order设为Ports,找到RH进行配置,Direction为Out,Mode为Digital。

4、生成代码,点击Generate Code将配置变成代码。Harmony会自动生成main、App等循环空任务,我们只需要在App.c 的APP_Tasks中添加我们的Code即可,注意APP_Tasks是循环执行的,使用的是状态机,初始状态为Init,Init会执行一次,如果没有出错,然后状态就变成Tasks;之后若状态不改变,就会一直重复执行Tasks。查看main.c即可看到:

while ( true )

{

SYS_Tasks ();

}


再转到SYS_Tasks();

void SYS_Tasks( void )

{

APP_Tasks();

}

GPIO输出代码如下:

可以转至其定义,查看其它命令,例如Read等等。由于不像usart、i2c这类需要在系统初始化之后还要自己做一些初始化动作,GPIO直接可以使用。

在app.c中APP_Task()中调用。


void APP_Tasks ( void )

{

switch ( appState )

{

case APP_STATE_INIT:

{

bool appInitialized = true;

if (appInitialized)

{

SYS_PORTS_PinWrite(POPRS_ID_0, PORT_CHANNEL_H, 0, true); //RH0 点亮

appState = APP_STATE_SERVICE_TASKS; //初始化完成,状态变为TASKS,下次循环开始执行APP_STATE_SERVICE_TASKS

}

break;

}

case APP_STATE_SERVICE_TASKS:

{

delay_ms(2000);

SYS_PORTS_PinToggle(POPRS_ID_0, PORT_CHANNEL_H, 1); //RH1每隔2s亮灭一次

}

default:

{

break;

}

}



保存,编译并下载到开发板吧。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯