串口接收数据-控制LED灯

目标

通过串口接收数据,对数据分析,控制8个LED灯按照设定时间闪烁。

  1. 8个LED灯可以任意设计,是否闪烁。
  2. 闪烁时间按ms计算,通过串口发送,可设置1~4,294,967,296ms,也就是4字节数据
  3. 协议自拟,有数据报文头和尾

实现

串口接收8字节数据,2字节头+4字节time+1字节LED+1字节尾

数据协议定义:

7 6 5 4 3 2 1 0
0x55 0xA5 time[31:0] ctrl[7:0] 0xF0

分析到一帧完整数据就可是提取并设置LED闪烁样式。

模块划分:

  1. 串口接收
  2. 串口数据分析
  3. LED控制
  4. 顶层连接

硬件

串口GPIO:


LEDGPIO:

软件

c 复制代码
/****************顶层********************/
uart_rx_ctrl_led(
    Clk,
    Reset_n,
    Led,
    uart_rx    
    );
    input Clk;
    input Reset_n;
    output wire[7:0]Led;
    input uart_rx;
    
/****************led控制********************/
    wire [7:0] ctrl;
    wire [31:0] time_set;
    counter_led counter_led(
    .Clk(Clk),
    .Reset_n(Reset_n),
    .Ctrl_data(ctrl),
    .Time(time_set),
    .led(Led)
    );
/****************串口接收********************/  
    wire [7:0]rx_data;
    wire rx_done;
    uart_rx uart_rx_in(
    .Clk(Clk),
    .Reset_n(Reset_n),
    .Baund_set(4),
    .uart_Rx(uart_rx),
    .Data(rx_data),
    .Rx_Done(rx_done)
    );
/****************串口处理********************/
    uart_cmd uart_cmd(
        .Clk(Clk),
        .Reset_n(Reset_n),
        .rx_data(rx_data),
        .rx_done(rx_done),
        .ctrl(ctrl),
        .time_set(time_set)
        );

注意

  1. 数据分析采用------检测缓冲区,不断去检测该缓冲区首尾,是否符合要求。
  2. 在进行时间赋值时,采用 if(tims_ms == time_set)进行清空,不好的地方就是time_ms>time_set时不会进行清空,直到计数溢出重新计到设定值,所以这地方要改成if( time_ms >= time_set )时对time_ms清空。
  3. 对于判断中有数字与变量的判断要养成把数字写在前的习惯,能避免if( time = 10)这种错误,if(10 = time)就会提示编译错误,而第一种会赋值然后条件为真直接运行里面的程序。
相关推荐
悠哉悠哉愿意4 小时前
【电赛学习笔记】MaixCAM 的OCR图片文字识别
笔记·python·嵌入式硬件·学习·视觉检测·ocr
慕容白 MU6 小时前
新唐51单片机看门狗配置流程
c语言·单片机·嵌入式硬件·51单片机
吴烦恼的博客7 小时前
FSMC的配置和应用
c语言·单片机·fsmc
jingjing~8 小时前
STM32 软件模拟 I2C 读写 MPU6050--实现加速度与陀螺仪数据采集
stm32·单片机·嵌入式硬件
wearegogog12310 小时前
Arduino与STM32:初学者该如何选择?
stm32·单片机·嵌入式硬件
乌恩大侠11 小时前
USRP X440 和USRP X410 直接RF采样架构的优势
5g·fpga开发·架构·usrp·usrp x440·usrp x410
EVERSPIN11 小时前
新升级超值型系列32位单片机MM32G0005
单片机·嵌入式硬件
qq_4017004111 小时前
stm32的can总线
stm32·单片机·嵌入式硬件
蜡笔小电芯12 小时前
【CAN总线】STM32 的 CAN 总线通信开发笔记(基于 HAL)
笔记·stm32·单片机
景彡先生13 小时前
STM32系统定时器(SysTick)详解:从原理到实战的精确延时与任务调度
stm32·单片机·嵌入式硬件