[PIC®/AVR®/dsPIC®产品] 【Curiosity Nano测评报告】LED闪烁、按键及串口测试

[复制链接]
 楼主| hu9jj 发表于 2024-9-16 10:31 | 显示全部楼层 |阅读模式
本帖最后由 hu9jj 于 2024-9-20 08:37 编辑

#申请原创#

    两周前收到核心板之后,只因为迟迟无法进入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语句插入在需要的位置,将程序运行的相关数据信息发送到电脑上,然后通过串口助手来观察。
    下图为串口助手信息的截图:

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

  3. uint8_t Keys=0;
  4. /*
  5.     Main application
  6. */

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

  14.     // Enable the Global Interrupts
  15.     //INTERRUPT_GlobalInterruptEnable();

  16.     // Disable the Global Interrupts
  17.     //INTERRUPT_GlobalInterruptDisable();

  18.     // Enable the Peripheral Interrupts
  19.     //INTERRUPT_PeripheralInterruptEnable();

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

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


    本次测试按键采用轮询方式,没有采用中断方式;LED闪烁也只使用了简单的延时函数,没有采用高效的定时器方式。
    应坛友要求,补充本次实验工程项目的压缩包:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
呐咯密密 发表于 2024-9-18 16:14 | 显示全部楼层
用工具配置项目好方便
1564564 发表于 2024-9-19 18:48 | 显示全部楼层
可以把工程给开源一下嘛,一直想用这个但是自己很蒙。
 楼主| hu9jj 发表于 2024-9-20 08:38 | 显示全部楼层
1564564 发表于 2024-9-19 18:48
可以把工程给开源一下嘛,一直想用这个但是自己很蒙。

项目文件的压缩包已经补充在1楼。
jiekou001 发表于 2024-9-29 14:59 | 显示全部楼层
这个工具看着蛮好用的。
 楼主| hu9jj 发表于 2024-9-29 15:08 | 显示全部楼层
jiekou001 发表于 2024-9-29 14:59
这个工具看着蛮好用的。

确实不错,一些方面感觉比STM32CUBE MX还要直观些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

151

主题

1063

帖子

11

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

151

主题

1063

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部