网站建设公司推荐北京华网,做网站要懂什么编程,wordpress经常打不开,上海企业网上公示系统目标
通过串口接收数据#xff0c;对数据分析#xff0c;控制8个LED灯按照设定时间闪烁。
8个LED灯可以任意设计#xff0c;是否闪烁。闪烁时间按ms计算#xff0c;通过串口发送#xff0c;可设置1~4,294,967,296ms#xff0c;也就是4字节数据协议自拟#xff0c;有数…目标
通过串口接收数据对数据分析控制8个LED灯按照设定时间闪烁。
8个LED灯可以任意设计是否闪烁。闪烁时间按ms计算通过串口发送可设置1~4,294,967,296ms也就是4字节数据协议自拟有数据报文头和尾
实现
串口接收8字节数据2字节头4字节time1字节LED1字节尾 数据协议定义
765 4 3 2100x550xA5time[31:0]ctrl[7:0]0xF0
分析到一帧完整数据就可是提取并设置LED闪烁样式。 模块划分
串口接收串口数据分析LED控制顶层连接
硬件
串口GPIO LEDGPIO
软件
/****************顶层********************/
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));注意
数据分析采用——检测缓冲区不断去检测该缓冲区首尾是否符合要求。在进行时间赋值时采用 iftims_ms time_set)进行清空不好的地方就是time_mstime_set时不会进行清空直到计数溢出重新计到设定值所以这地方要改成if( time_ms time_set )时对time_ms清空。对于判断中有数字与变量的判断要养成把数字写在前的习惯能避免if( time 10)这种错误if(10 time)就会提示编译错误而第一种会赋值然后条件为真直接运行里面的程序。