打印
[PIC®/AVR®/dsPIC®产品]

【Curiosity Nano测评报告】LED闪烁、按键及串口测试

[复制链接]
172|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hu9jj|  楼主 | 2024-9-16 10:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#

    两周前收到核心板之后,只因为迟迟无法进入MCC,测试工作一度搁浅。在热心坛友的帮助下,参照了诸多的帖子,在我的台式电脑上仍然无法进入MCC,后来我在笔记本上测试,可以进入MCC,因此初步判断也许是操作系统的问题:我的笔记本上安装的是WIN10,而台式电脑上是WIN7。由于笔记本的屏幕仅有11.3英寸,字体太小看不清楚,调大字体后显示不全操作极不方便,于是就准备升级台式电脑上的操作系统。升级之后果然就很容易地进入MCC了,由此开始继续测试。
    这次同时测试了通过按键控制LED闪烁的间隔时间,并将间隔时间通过串口通讯发送到电脑。
    首先按部就班地建立好测试项目,这个过程大家的帖子里都有详细叙述,我在这里就不介绍了。唯一需要提醒的是在最后点击“完成”前需要选择好中文,否则在代码和注释中就无法输入汉字了。详见下图:

    如果您在建立项目时未选择中文,当然也可以在之后打开项目的属性窗口进行修改。
    项目建立好之后就可以进入MCC进行配置了,下图为本次测试配置好的界面:

  根据核心核心板的电路图得知,板载LED灯的引脚为RC2,高电平点亮;按键引脚为RC3,低电平触发;串口通讯的TX引脚为RC4,RX引脚为RC5。先将所需的设备添加进项目之后,再对引脚进行配置。为方便延时,可以在定时器选项里添加DELAY项,这样就可以自动添加毫秒和微秒延时函数,省得自己去计算和写代码。

    串口通讯我使用的是默认9600速率,此时要注意开启redirect printf of UART,如上图红色箭头所指,否则就不能在程序中使用PRINTF重定向打印功能。这个功能在代码调试过程中作用很大,可以将printf语句插入在需要的位置,将程序运行的相关数据信息发送到电脑上,然后通过串口助手来观察。
    下图为串口助手信息的截图:

    这是测试的代码:
#include "mcc_generated_files/system/system.h"
#include "mcc_generated_files/timer/delay.h"

uint8_t Keys=0;
/*
    Main application
*/

int main(void)
{
    uint16_t i=100;
    SYSTEM_Initialize();
    // If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
    // If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global and Peripheral Interrupts
    // Use the following macros to:

    // Enable the Global Interrupts
    //INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Enable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptEnable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();
    printf("LED闪烁+USART通讯测试...\n");

    while(1)
    {
        if(0==IO_RC3_GetValue()){
            DELAY_milliseconds(10);
            while(0==IO_RC3_GetValue()){
                if(Keys<250)
                    Keys++;
            }
        }
        if(Keys>0){
            Keys=0;                 //清除按键标志
            i<<=1;                  //延时时间加倍
            if(i>5000)
                i=100;              //延时超过5秒则回归100毫秒起点
        }
        IO_RC2_Toggle();            //翻转LED引脚电平
        DELAY_milliseconds(i);      //延时
        printf("当前延时的时间为%d毫秒。\n\n",i);
    }   
}
   在使用delay延时函数时,需要注意先将头文件包含(上面行第二行)。
    LED灯闪烁的间隔时间初设为100毫秒,每按下一次按键,间隔时间翻倍(i<<=1),当间隔时间超过5秒时回归到100毫秒的初始值。下图的红色箭头处即为按键后的变化:


    本次测试按键采用轮询方式,没有采用中断方式;LED闪烁也只使用了简单的延时函数,没有采用高效的定时器方式。

使用特权

评论回复
沙发
呐咯密密| | 2024-9-18 16:14 | 只看该作者
用工具配置项目好方便

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

147

主题

1040

帖子

11

粉丝