Curiosity PIC32MZEF学习教程:最简单的IO端口测试

控制/MCU

1819人已加入

描述

本篇来进行最简单的IO端口测试,编写软件控制板卡上的LED灯闪烁。

以下是I/O端口的一些主要特性:

• 可单独使能/禁止输出引脚的漏极开路

• 可单独使能/禁止输入引脚的弱上拉和下拉

• 监视选择性输入并在检测到引脚电平状态发生变化时产生中断

• 可在休眠和空闲模式下继续工作

• 可使用CLR、SET和INV寄存器进行快速位操作

先来看看IO口的内部框图,看起来很复杂的样子

作为数字I/O,所有端口引脚都有最多14个与其操作直接关联的寄存器。数据方向寄存器(TRISx)决定引脚是输入还是输出。如果数据方向位为1,则引脚为输入。复位后,所有端口引脚均定义为输入。读锁存器(LATx)时,读到的是锁存器中的值;写锁存器时,写入的是锁存器。读端口(PORTx)时,读到的是端口引脚的值;而写端口引脚时,写入的是锁存器。

打开MPLAB X IDE,建立基于Harmony的工程,Harmony里面生成的文件都是基于库操作的,简单点,寄存器太多了,操作太困难

可配置性在 Harmony 的项目里,就是 system_config.h,system_init.c,system_tasks.c,system_interrupt.c 几个源文件的 体现,如下图:

Harmony在设计之初就充分考虑了项目的可配置性,让同样的应用代码或者软件库可以在不同的硬件(或软件)配置上运行,同时也让 MHC 有了用武之地,并且代码结构非常规范、易读。

时钟等配置都采取默认的,我们拿RE3口做实验,板卡上的RE3是控制一个发光二极管LED1,高电平亮,低电平灭。因为选择的对应的板卡配置,所以默认都是对的。

直接点生成工程,在工程里打开app.c文件

因为mian里面的主循环在app.c里的APP_Tasks函数,在函数里增加如下语句

BSP_LEDToggle(BSP_LED_1);控制LED1引脚的电平翻转

延时的函数按照主频200MHZ算的话,大概1S多

BSP_LEDToggle跳转到的函数是PLIB_PORTS_PinToggle,这个函数的功能就是把对应哪个端口的哪个位进行电平翻转。在对应文件ports_p32mz2048efm100.h文件中

编译程序,下载,可以看到板卡上的LED红色灯在慢慢的闪烁

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分