控制/MCU
本篇来进行最简单的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红色灯在慢慢的闪烁
全部0条评论
快来发表一下你的评论吧 !