本帖最后由 gaoyang9992006 于 2025-1-10 15:26 编辑
#申请原创# @21小跑堂
本人计划发一个系列的AVR单片机的MCC开发图文教程,之前发过类似的,发现新版的MCC跟之前改动比较大,也更加完备,更加好用了。
特此开贴更新一系列教程
本教程使用的开发板为:ATMEGA4809 CURIOSITY NANO
该开发板特性如下:ATmega4809 微控制器
一个机械用户开关
一个黄色用户 LED
32.768kHz 晶体,用于精确定时和时钟应用,~20 ppm
板载调试器
Microchip MPLAB X 中的电路板识别
一个绿色电源和状态 LED
编程和调试
虚拟 COM 端口 (CDC)
两个逻辑分析仪通道 (DGI GPIO)
USB 供电
可调目标电压
MIC5353 由板载调试器控制的 LDO 稳压器
1.8 - 5.1 V 输出电压(受 USB 输入电压限制)
500mA 最大输出电流
ATmega4809 微控制器 (MCU) 将智能硬件外设与 AVR 内核的低功耗容量相结合,拓宽了实时控制系统的有效性。使用高速 ADC、内核独立外设 (CIP) 和片上可配置自定义逻辑 (CCL) 提升您的设计。
MPLAB X IDE 作为放大镜,用于查看 MCU 并逐步完成调试。免费、易于使用的图形编程工具 MCC 允许您直观地对 ATmega4809 进行编程。
该开发板的主要特点
一块口香糖大小的板子,有能力将您的想法推向市场
板载调试器 - 无需外部工具即可对 ATmega4809 进行编程
灵活的 8 位 ATmega4809 MCU 非常适合实时控制
好了,接下来进入正题,所有的单片机学习第一步都是从点灯开始,也就是IO的输出。本贴将一并讨论IO的输入与输出配置与使用。
MCC是近年来微芯推出的图形化代码配置工具,可以在不用学习寄存器的基础上即可实现单片机硬件的配置与使用,并生成通俗易懂的库函数与工程模板。
大大降低了学习难度,可以帮助你快速的实现项目的开发。
接下来进入正题
新建工程,新建MCC工程
本次点灯使用的ATmega4809 Curiosity Nano evalutation kit,开发板上PF5是LED,PF6是按钮SW
该部分原理图是
可知,LED在低电平时候点亮,如果上电默认熄灭可配置为初始化高电平。
按钮是直接到地,可配置内部上拉电阻,按下后拉低。
先简单点亮LED,按照1Hz频率闪烁
在MCC网格矩阵配置PF5为输出
并在PINS配置工具条给引脚起一个新的名字YELLOW_LED,并勾选开始时候为高电平,这样默认就是熄灭状态了。
在定时器找到DELAY,添加到工程。
单击Generate生成工程代码,并完成编写main函数
#include "mcc_generated_files/system/system.h"
#include"mcc_generated_files/timer/delay.h"
/*
Main application
*/
int main(void)
{
SYSTEM_Initialize();
while(1)
{
YELLOW_LED_Toggle();
DELAY_milliseconds(500);
}
}
编译并烧录。
此时PF5的黄色LED已经开始按照1Hz的周期开始闪烁了。
接下来添加按钮功能,以实现按下后停止闪烁,松开后按照上述方式闪烁。
配置PF6为输入模式
给PF6起个新名字SW,并使能上拉电阻
单击Generate生成工程代码
#include "mcc_generated_files/system/system.h"
#include"mcc_generated_files/timer/delay.h"
/*
Main application
*/
int main(void)
{
SYSTEM_Initialize();
while(1)
{
if(SW_GetValue())
{
YELLOW_LED_Toggle();
DELAY_milliseconds(500);
}
else
{
YELLOW_LED_SetHigh();
}
}
}
编译测试,达到想要的效果。
好了,接下来有空我会分享多个外设的MCC配置使用方法配有视频教程
补充: Inverted I/O Enable
该功能是翻转IO的电平,使能了该功能的引脚,你在程序里IO输出高电平时候是输出低电平,输出高电平的时候是低电平。
例如上述代码的示例中,按下按钮正常是熄灭LED的,如果使能了PF5引脚的翻转IO功能,那么当按下按钮时候将会点亮LED。
那么输入呢?当然是相似的了,你可以试试这个功能了。
下一课学习IO的中断
https://bbs.21ic.com/icview-3426460-1-1.html
|