【PIC32MZ】点亮LED

    xiaoxiao2021-04-17  35

    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; } } 保存,编译并下载到开发板吧。
    转载请注明原文地址: https://ju.6miu.com/read-673331.html

    最新回复(0)