【PIC32MZ】点亮LED

版权声明:本文为博主原创文章,转载注明出处 https://blog.csdn.net/u010875635/article/details/70170176
MCU开发第一步都是点亮LED,就跟软件的Hello World一样,先开始第一步吧。
新建一个项目,参考开发环境搭建,具体我就不写了。

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

【PIC32MZ】MCU <wbr>Hello <wbr>World <wbr>之 <wbr>点亮LED

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;
        }
}



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




猜你喜欢

转载自blog.csdn.net/u010875635/article/details/70170176
今日推荐