查看: 1615  |  回复: 1
基于MSPM0L1306的开发板-新品评测-串口收发与按键中断控制LED
Winer
1
主题
0
回复
发表于2024-01-27 20:19:59 | ip属地:北京 | 显示全部楼层
1# 电梯直达

1.整体使用评价

这个芯片功耗很低,非常适合物联网使用;这个开发板比较小巧,管家引出丰富,适合直接做核心板进行二次开发。

颜色分类,防止差错,这个非常值得点赞哦。

2.开发项目流程

首先感谢立创商城哦。

我收到的开发板实物如下:


实现任务:

1-按键是SW1控制3个LED显示(LED2~4)

上电时:LED2~4,每秒闪烁一次;

按第1次:只有LED2亮,其它灭;

按第2次:只有LED3亮,其它灭;

按第3次:只有LED4亮,其它灭;

按第4次:LED2~4全亮

按第5次:LED2~4全灭;

按第6次:LED2~4,每秒闪烁一次;


按第7次:只有LED2亮,其它灭;

按第8次:只有LED3亮,其它灭;

按第9次:只有LED4亮,其它灭;

按第10次:LED2~4全亮

按第11次:LED2~4全灭;

重复以上步骤哦



2-串口控制LED:

串口接收到ASCII码:‘0‘~‘5’,控制码命令如下:

‘0’:LED2~4,每秒闪烁一次;

‘1’:只有LED2亮,其它灭;

‘2’:只有LED3亮,其它灭;

‘3’:只有LED4亮,其它灭;

‘4’:LED2~4全亮

‘5’:LED2~4全灭;

其它字符,不响应;


3-串口回传功能

串口接收到的每个字符都上传回去




开发环境搭建:

1-安装SDK,具体去官网查找

有网友有更详细的流程,如下链接

https://www.elecfans.com/d/2065734.html

2-我采用的是Keil5开发,相关版本和配置如下:

 

注意添加flash:

 

千万不要选择错误哦。

 


我已经尽量详细了哦。

编译和下载:

 

可以有报警,不能有错误哦。



下面介绍详细代码:



核心代码如下:


flag=0;

}

//根据cnt数值进行控制LED效果
if(cnt==0)

{

DL_GPIO_togglePins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_4_PIN | GPIO_LEDS_USER_LED_2_PIN | GPIO_LEDS_USER_LED_3_PIN);delay_cycles(16000000);

}else if(cnt==1)

{

DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);

DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN | GPIO_LEDS_USER_LED_4_PIN);delay_cycles(16000000);



}else if(cnt==2)

{

DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);

DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN | GPIO_LEDS_USER_LED_4_PIN);delay_cycles(16000000);

}else if(cnt==3)

{

DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_4_PIN);

DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN | GPIO_LEDS_USER_LED_2_PIN);delay_cycles(16000000);

}else if(cnt==4)

{

DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_4_PIN | GPIO_LEDS_USER_LED_2_PIN | GPIO_LEDS_USER_LED_3_PIN);delay_cycles(16000000);

}else if(cnt==5)

{

DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_4_PIN | GPIO_LEDS_USER_LED_2_PIN | GPIO_LEDS_USER_LED_3_PIN);delay_cycles(16000000);

}



//防抖延时

delay_cycles(320000);

}

}





//串口中断接收

void UART_0_INST_IRQHandler(void)

{

uint8_t data;

   switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) {

       case DL_UART_MAIN_IIDX_RX:

           data = DL_UART_Main_receiveData(UART_0_INST);

           DL_UART_Main_trans_mitData(UART_0_INST, data);

if((data>='0')&(data<='5'))

{

cnt=data-48;

}

           break;

       default:

           break;

   }

}

//按键中断



void GROUP1_IRQHandler(void)

{

   switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1)) {

       case GPIO_SWITCHES_INT_IIDX:

flag=1;

           break;

   }

}


LED管脚定义


#define GPIO_LEDS_PORT                                                   (GPIOA)
#define GPIO_LEDS_USER_LED_3_PIN                                 (DL_GPIO_PIN_26)
#define GPIO_LEDS_USER_LED_3_IOMUX                                (IOMUX_PINCM27)
#define GPIO_LEDS_USER_LED_2_PIN                                 (DL_GPIO_PIN_13)
#define GPIO_LEDS_USER_LED_2_IOMUX                                (IOMUX_PINCM14)
#define GPIO_LEDS_USER_LED_4_PIN                                 (DL_GPIO_PIN_27)
#define GPIO_LEDS_USER_LED_4_IOMUX                                (IOMUX_PINCM28)





串口参数初始化


SYSCONFIG_WEAK void SYSCFG_DL_UART_0_init(void)

{

   DL_UART_Main_setClockConfig(UART_0_INST, (DL_UART_Main_ClockConfig *) &gUART_0ClockConfig);



   DL_UART_Main_init(UART_0_INST, (DL_UART_Main_Config *) &gUART_0Config);

   /*

    * Configure baud rate by setting oversampling and baud rate divisors.

    *  Target baud rate: 9600

    *  Actual baud rate: 9576.04

    */

   DL_UART_Main_setOversampling(UART_0_INST, DL_UART_OVERSAMPLING_RATE_3X);

   DL_UART_Main_setBaudRateDivisor(UART_0_INST,

       UART_0_IBRD_33_kHZ_9600_BAUD, UART_0_FBRD_33_kHZ_9600_BAUD);

   /* Configure Interrupts */

   DL_UART_Main_enableInterrupt(UART_0_INST,

                                DL_UART_MAIN_INTERRUPT_RX);





   DL_UART_Main_enable(UART_0_INST);

}



3.成果展示

串口控制效果验证如下,可以对比后面的视频哦

 效果验证:


具体效果可以看B站视频链接哦

https://www.bilibili.com/video/BV1Ak4y1S7dU/?vd_source=24f1befd6441a33d7b240715cb07c7b5


 

生成的hex文件,大家可以下载验证哦,很好玩。

希望立创有更多更好玩的板子开源出来哦。

下次做个电子时钟,采用OLED屏幕,敬请期待哦。


串口和按键控制LED.zip 




主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部