串口传图显示

2023-05-16

串口传图

使用串口通信协议传输一张图像到SDRAM存储后VGA协议显示到屏幕。

工程设计

图片生成 使用小梅哥资源中的Picture2Hex软件生成任意分辨率的图片(我这里选择640*480)。
在这里插入图片描述
matlab将得到合适分辨率的照片使用matlab软件分析为文本便于串口发送(图片中每一个像素点都有具体的数值)。这里有两种方法:
1 将图片转为RGB332 使用野火提供视频资源基于RS232的VGA显示中的matlab代码,一个像素点为8位数据使用串口发送。

clc;                    %清理命令行窗口
clear all;              %清理工作区
RGB=imread('0003.bmp');     %使用imred函数读取图片数据
[ROW,COL,D]=size(RGB);  %图片行,列,维度
R=RGB(:,:,1);           %提取图片中的红色分量
G=RGB(:,:,2);           %提取图片中的绿色分量
B=RGB(:,:,3);           %提取图片中的蓝色分量
imgdata=zeros(1,ROW*COL);%定义一个初值为0的数组,存储转换后的图片数据
%转化为RGB332格式
for r=1:ROW
    for c=1:COL
        imgdata((r-1)*COL+c)=bitand(R(r,c),224)+bitshift(bitand(G(r,c),224),-3)+bitshift(bitand(B(r,c),192),-6);
    end
end
%打开或生成txt文件,将格式转换完成的数据写入txt文件
fidc=fopen('picture3.txt','w+');
for i=1:ROW*COL
    fprintf(fidc,'%02x',imgdata(i));
end
fclose(fidc);

2 将图片转为RGB565 使用串口传图中的matlab代码,一个像素点为16位数据。串口一次发送8位,使用此代码发送一个像素点的信息需要发送两次。由于工程中VGA模块输入端口为16位故采用此方法。

clear all;
RGB24 = imread('0001.bmp');            %读取图片文件
fid = fopen('rgb565_1.txt','w+');         %打开文件
[ROW,COL,N] = size(RGB24);              %获得图片尺寸[高度,长度,维度]
for i = 1:ROW
    for j = 1:COL
         RG = bitand(RGB24(i,j,1),248) + bitshift(RGB24(i,j,2),-5); %{R[7:3],3'd0} + {5'd0,G[7:5]}
         G = bitand(RGB24(i,j,2),28);                               %{3'd0,G[4:2],2'd0}
         GB = bitshift( G,3) + bitshift(RGB24(i,j,3),-3);           %{G[4:2],5'd0} + {3'd0,B[7:3]}
         fprintf(fid,'%02x %02x ',RG,GB);%将字符打印到txt文件中
    end
end

工程整体图
在这里插入图片描述

工程源码

注: 由于串口传输8位数据,故将SDRAM中读缓存IP输入端口设置为8位。

顶层源码

module  UART_DISP(
   input    wire                Rx              ,
   input    wire                Clk             ,
   input    wire                Rst_n           ,
   //VGA显示端口                        
   output   wire     [15:0]     Rgb             ,
   output   wire                Hsync           ,
   output   wire                Vsync           ,
   output   wire                Clk_vga         ,
   output   wire                Disp_DE         ,
   //与SDRAM硬件端口                    
   inout    wire     [15:0]     Sdram_dq        ,   
   output   wire                Sdram_cke       ,
   output   wire                Sdram_cs_n      ,
   output   wire                Sdram_cas_n     ,
   output   wire                Sdram_ras_n     ,
   output   wire                Sdram_we_n      ,
   output   wire     [1:0]      Sdram_ba        ,
   output   wire     [12:0]     Sdram_addr      ,
   output   wire     [1:0]      Sdram_dqm       ,
   output   wire                Sdram_clk       ,
   output   wire                 Led             
);  

parameter   baud_set = 3'd4;        //波特率设置,115200bps
parameter   img_h    = 640;         //图片宽度    //640
parameter   img_v    = 480;         //图片高度    //480
parameter   img_data_byte = img_h*img_v;   
    
    
wire                wr_en               ;           //写SDRAM数据使能信号
reg     [31:0]      byte_cnt            ;           //计数8位串口发送次数计数器 
reg                 disp_state          ;           //显示状态使能信号
wire                sys_rst_n           ;
wire                locked              ;
wire                clk_50M             ;
wire                clk_100M            ;
wire                clk_100M_shit       ;
wire                clk_40M             ;
wire    [7:0]       data_out_rx         ;           //8位串口输出数据
wire                pix_reg             ;           //读SDRAM读缓存请求信号
wire                vga_begin           ;           //SDRAM端读FIFO清零使能信号
wire    [15:0]      pix_data            ;           //16位像素数据
reg                 rd_en               ;           //读SDRAM读FIFO使能信号
wire                sdram_rd_en         ;           //读SDRAM读缓存请求信号

assign  sdram_rd_en = (disp_state) ? pix_reg:1'b0 ;

always @(posedge Clk or negedge Rst_n)
    if(!Rst_n)
        rd_en <= 1'b0;
    else
    if(disp_state && vga_begin)
        rd_en <= 1'b1;
    else
        rd_en <= rd_en;
        
assign Led = rd_en;

assign   sys_rst_n   =  Rst_n && locked    ;
//计数串口发送的次数 
always @(posedge Clk or negedge sys_rst_n)
    if(!sys_rst_n)
        byte_cnt    <=  1'b0    ;
    else
    if(wr_en)
        begin
            if( byte_cnt < (img_data_byte<<1))
                byte_cnt <= byte_cnt + 32'b1     ;
            else
                byte_cnt <= (img_data_byte<<1) ;      
        end
    else
        byte_cnt <= byte_cnt ;
//串口发送图片尺寸一半变为可读取状态          
always @(posedge Clk or negedge sys_rst_n)
    if(!sys_rst_n)
        disp_state  <=  1'b0 ;
    else
    if(byte_cnt == (img_data_byte<<1))
        disp_state  <=  1'b1 ;
    else
        disp_state  <=  1'b0 ;        
    
UART_RX     UART_RX_inst(  //串口接收模块
    .Clk        (  clk_50M      )    ,
    .Rst_n      (  sys_rst_n    )    ,
    .Rs232_rx   (  Rx           )    ,
    .Bps_set    (  baud_set     )    ,
        
    .Data_out   (  data_out_rx  )    ,
    .Done_rx    (  wr_en      )
);    

CLK_STRAT	CLK_STRAT_inst(
	.areset ( !Rst_n ),
	.inclk0 ( Clk    ),
	.c0     ( clk_50M ),            //50M
	.c1     ( clk_100M ),           //100M
	.c2     ( clk_100M_shit ),      //100M位移信号
	.c3     ( clk_40M ),            //25M
	.locked ( locked )
	);

SDRAM_TOP  SDRAM_TOP_inst(
    .Clk                  ( clk_100M     ),
    .Rst_n                ( sys_rst_n    ),
    .Clk_out              ( clk_100M_shit     ),     //输入相位偏移时钟
    // 写FIFO                           
    .Wr_fifo_wr_clk       ( clk_50M          ),    
    .Wr_fifo_wr_req       ( wr_en            ),
    .Wr_fifo_wr_data      ( data_out_rx      ),      //写入写FIFO中的数据
    .Sdram_wr_b_addr      ( 24'b0            ),
    .Sdram_wr_e_addr      ( img_data_byte    ),
    .Wr_burst_len         ( 10'd512          ),      //max512
    .Wr_rst               ( ~sys_rst_n       ),      //写复位信号
    // 读FIFO                           
    .Rd_fifo_rd_clk       ( clk_40M          ),
    .Rd_fifo_rd_req       ( sdram_rd_en      ),
    .Sdram_rd_b_addr      ( 24'b0            ),
    .Sdram_rd_e_addr      ( img_data_byte    ),
    .Rd_burst_len         ( 10'd512          ),      //读突发长度
    .Rd_rst               ( ~sys_rst_n       ),      //读复位信号
    .Rd_value             ( rd_en            ),
    .Rd_fifo_rd_data      ( pix_data         ),      //读FIFO中读出的数据
    .Rd_fifo_num          (      ),      //读FIFO中存在的数据个数
    // 与SDRAM的硬件接口                         
    .Sdram_clk            ( Sdram_clk       ),
    .Sdram_cke            ( Sdram_cke       ),                                         
    .Sdram_cs_n           ( Sdram_cs_n      ),
    .Sdram_cas_n          ( Sdram_cas_n     ),
    .Sdram_ras_n          ( Sdram_ras_n     ),
    .Sdram_we_n           ( Sdram_we_n      ),
    .Sdram_ba             ( Sdram_ba        ),
    .Sdram_addr           ( Sdram_addr      ),
    .Sdram_dq             ( Sdram_dq        ),     // SDRAM 数据总线
    .Sdram_dqm            ( Sdram_dqm       )

);

VGA_CTRL   
            // #(
              // .H_SYNC  (11'd128)   ,
              // .H_BACK  (11'd88)    ,
              // .H_LEFT  (11'd0)     ,
              // .H_ABLE  (11'd800)   ,
              // .H_RIGHT (11'd0)     ,
              // .H_PRONT (11'd40)    ,
              // .H_TORAL (11'd1056)  ,
                                  
              // .V_SYNC  (11'd4)    ,
              // .V_BACK  (11'd23)   ,
              // .V_LEFT  (11'd0)    ,
              // .V_ABLE  (11'd600)  ,
              // .V_RIGHT (11'd0)    ,
              // .V_PRONT (11'd1)    ,  
              // .V_TORAL (11'd628)
            // )
VGA_CTRL_inst(

    .Clk        ( clk_40M     )   ,               
    .Rst_n      ( sys_rst_n   )   ,
    .Pix_data   ( {pix_data[7:0],pix_data[15:8]} ) , 
    
    .Rgb        ( Rgb          )   ,
    .Hsync      ( Hsync        )   ,
    .Vsync      ( Vsync        )   ,
    .Pix_x      (       )   ,
    .Pix_y      (       )   ,
    .Clk_vga    ( Clk_vga     )   ,
    .Disp_DE    ( Disp_DE     )   ,  //VGA 场消隐信号
    .Vga_begin  (  vga_begin    )   ,  //SDRAM读FIFO缓存清零信号 高电平有效
    .Pix_reg    (  pix_reg    )      //每个像素点显示16位信息请求信号
);                                            
endmodule  

顶层仿真源码

`timescale 1ns/1ns
`define CLOCK 20

module  UART_DISP_tb();

defparam    UART_DISP_inst.VGA_CTRL_inst.H_SYNC  =   11'd96     ,         //行同步周期     
            UART_DISP_inst.VGA_CTRL_inst.H_BACK  =   11'd40     ,         //行后沿周期     
            UART_DISP_inst.VGA_CTRL_inst.H_LEFT  =   11'd8      ,         //行左边框周期     
            UART_DISP_inst.VGA_CTRL_inst.H_ABLE  =   11'd640    ,         //行有效图像周期数     
            UART_DISP_inst.VGA_CTRL_inst.H_RIGHT =   11'd8      ,         //行右边框     
            UART_DISP_inst.VGA_CTRL_inst.H_PRONT =   11'd8      ,         //行前沿     
            UART_DISP_inst.VGA_CTRL_inst.H_TORAL =   11'd800    ,         //行总扫描周期                              
            UART_DISP_inst.VGA_CTRL_inst.V_SYNC  =   11'd2      ,         //列同步周期     
            UART_DISP_inst.VGA_CTRL_inst.V_BACK  =   11'd25     ,         //列后沿周期     
            UART_DISP_inst.VGA_CTRL_inst.V_LEFT  =   11'd8      ,         //列左边框周期     
            UART_DISP_inst.VGA_CTRL_inst.V_ABLE  =   11'd480    ,         //列有效图像周期数     
            UART_DISP_inst.VGA_CTRL_inst.V_RIGHT =   11'd8      ,         //列右边框     
            UART_DISP_inst.VGA_CTRL_inst.V_PRONT =   11'd2      ,         //列前沿     
            UART_DISP_inst.VGA_CTRL_inst.V_TORAL =   11'd525    ;         //列总扫描周期     
          

  
reg                 Clk             ;
reg                 Rst_n           ;
reg                 con_en          ;                               
reg      [7:0]      data_in         ;                          
wire                rs232_tx        ;           
wire                done_tx         ;  
    //VGA显示端口 
wire      [15:0]    rgb             ;
wire                hsync           ;
wire                vsync           ;
wire                clk_vga         ;
wire                disp_DE         ;
    //与SDRAM硬件端口 
wire      [15:0]    sdram_dq        ;
wire                sdram_cke       ;
wire                sdram_cs_n      ;
wire                sdram_cas_n     ;
wire                sdram_ras_n     ;
wire                sdram_we_n      ;
wire      [1:0]     sdram_ba        ;
wire      [12:0]    sdram_addr      ;
wire      [1:0]     sdram_dqm       ;
wire                sdram_clk       ;       
reg      [7:0]      randone         ; 



initial Clk = 1;
always #(`CLOCK/2) Clk = ~ Clk;

UART_TX     UART_TX_inst(
    .Clk        (Clk        )    ,
	.Rst_n      (Rst_n      )    ,
	.Bps_set    (3'd4)           ,
	.Con_en     (con_en     )    ,
	.Data_in    (data_in    )    ,

	.Rs232_tx   (rs232_tx   )    ,
	.Done_tx    (done_tx    )    ,
	.Uart_state ()
  );

UART_DISP   #(  .img_h(10),
                .img_v(5)
    )   
UART_DISP_inst(
    .Rx             (rs232_tx)      ,
    .Clk            (Clk   )      ,
    .Rst_n          (Rst_n )      ,
    //VGA显示端口                            
    .Rgb            (rgb             )      ,
    .Hsync          (hsync           )      ,
    .Vsync          (vsync           )      ,
    .Clk_vga        (clk_vga         )      ,
    .Disp_DE        (disp_DE         )      ,
    //与SDRAM硬件端口                            
    .Sdram_dq       (sdram_dq   )      ,   
    .Sdram_cke      (sdram_cke  )      ,
    .Sdram_cs_n     (sdram_cs_n )      ,
    .Sdram_cas_n    (sdram_cas_n)      ,
    .Sdram_ras_n    (sdram_ras_n)      ,
    .Sdram_we_n     (sdram_we_n )      ,
    .Sdram_ba       (sdram_ba   )      ,
    .Sdram_addr     (sdram_addr )      ,
    .Sdram_dqm      (sdram_dqm  )      ,
    .Sdram_clk      (sdram_clk  )   
);  

sdram_model_plus    sdram_model_plus_inst(
    .Dq     (sdram_dq       ),
    .Addr   (sdram_addr     ),
    .Ba     (sdram_ba       ),
    .Clk    (sdram_clk      ),
    .Cke    (sdram_cke      ),
    .Cs_n   (sdram_cs_n     ),
    .Ras_n  (sdram_ras_n    ),
    .Cas_n  (sdram_cas_n    ),
    .We_n   (sdram_we_n     ),
    .Dqm    (2'b0           ),
    .Debug  (1'b1           )

);
//发送8位字节数据任务
task send_bit_data;
    begin
        @(posedge done_tx);
        #(`CLOCK*2) ;        
        con_en = 1  ;
        #(`CLOCK)   ;
        con_en = 0  ;
    end
endtask 


initial 
begin
    randone = {$random} % 60             ;                     //通过位并接操作产生一个值在0到59之间的数。
    Rst_n = 0;
    #(`CLOCK*5+1);
    con_en = 0   ;
    Rst_n = 1;
    #(`CLOCK*5);
    data_in = 1'b0 ;
    #(`CLOCK*50);   
    con_en = 1  ;
    #(`CLOCK)   ;
    con_en = 0  ;
    repeat(230)   //输出串口次数像素尺寸的两倍
        begin
            data_in = data_in + randone;
            send_bit_data;
        end
    #(`CLOCK*500+1);    
    $stop ;   
end
endmodule

顶层仿真结果

在这里插入图片描述

在这里插入图片描述
在VGA协议扫描一帧后串口图像传输完成,扫描下一帧时产生VGA_begin信号,读SDRAM信号Rd_value使能有效。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

串口传图显示 的相关文章

  • 硬石开发板STM32F407IGT6 (HAL库)学习笔记

    硬石开发板STM32F407IGT6 xff08 HAL库 xff09 学习笔记 2020 06 21 2020 06 22 2020 06 23 2020 06 24 该笔记为学习时遇到的问题与解决方法等内容的记录 xff0c 可能有错
  • Ubuntu20/视觉SLAM十四讲踩坑记录

    Ubuntu 视觉SLAM十四讲踩坑记录 Ubuntu xff08 20 xff09 视觉SLAM十四讲踩坑记录 xff1a 共性问题 xff1a 1 安装OpenCV后 xff0c 例程仍无法找到OpenCV文件 ch3 visualiz
  • AMESim2020.1仿真编译失败解决方法之一

    AMESim2020 1仿真编译失败解决方法之一 问题描述 xff1a 软件安装正确 xff0c 在准备和matlab联合仿真时 xff0c 换用VC2015以上版本编译器编译失败 解决方法 xff1a 到AMESim安装路径下 xff0c
  • Linux/Ubuntu20.04下载安装Geant4及B1示例测试

    Linux Ubuntu20 04下载安装Geant4及B1示例测试 0 参考内容1 下载geant4软件包2 geant4安装准备内容3 geant4文件编译4 安装数据包4 1 安装方式14 2安装方式2 5 添加文件路径6 B1示例测
  • Ubuntu20.04进行CUDA11.0及对应CUDNN安装

    Ubuntu20 04进行CUDA11 0及对应CUDNN安装 xff1a 基本步骤 xff1a 1 安装nvidia显卡驱动 可直接通过 xff1a 软件和更新 gt 附加驱动 选择满足CUDA版本的nvidia专有驱动 gt 应用更改
  • git分离头指针处理

    文章目录 1 什么是git分离头指针2 将git 分离头指针所指向的代码 xff08 commit id xff09 保存下来总结 本文将主要介绍一下git分离头指针状态 xff0c 并记录如何将分离头指针状态的代码合并到分支中 1 什么是
  • Docker使用系列——Docker安装(Ubuntu20.04)

    Docker使用系列 Docker安装 xff08 Ubuntu20 04 xff09 卸载安装测试问题 直接按官方安装教程即可 xff1a Install Docker Engine on Ubuntu 卸载 安装过老版本的Docker则
  • Docker使用系列——生成一个Ubuntu20.04+Pyqt5的容器

    由于在自己的电脑中安装Pyqt5不成功 xff0c 原因是与其他环境中的qt版本不兼容 因此 xff0c 了解到了docker xff0c 这里记录一下在docker中安装pyqt5过程 1 安装Docker并从官方仓库拉取Ubuntu 2
  • C语言实现链表(链式存储结构)

    链表 xff08 链式存储结构 xff09 及创建 链表 xff0c 别名链式存储结构或单链表 xff0c 用于存储逻辑关系为 一对一 的数据 与顺序表不同 xff0c 链表不限制数据的物理存储状态 xff0c 换句话说 xff0c 使用链
  • cmake与make的区别及CMakeLists.txt文件编写

    一 cmake与make的区别 make工具是一个自动化编译工具 xff0c 它会根据Makefile中的规则进行批处理编译 当需要编译的文件较多时 xff0c 使用make工具会大大提高效率 但是 xff0c 当项目较大时 xff0c 编
  • 接口测试学习必看 - 实现简易接口测试

    前言 终于整理到了接口测试部分的内容 xff0c 接口测试可以说是软件测试入门到初级软件测试的一个必备进阶技巧 很多挂着 灰盒测试 的标识 xff0c 其实就是对接口测试的另外一层理解 何为 灰盒 xff0c 能够看到一部分本质的东西 xf
  • roscpp 底层通讯协议更改

    ROS为机器人开发者们提供了不同语言的编程接口 xff0c 其中C 43 43 接口叫做roscpp xff0c 用来创建topic service param xff0c 实现ROS的通信功能 roscpp is a C 43 43 im
  • c++学习心得:STL初学(基础篇)

    标准函数库 xff08 STL xff09 学习心得 基础篇 STL主要由两种组件构成 xff1a 一是容器 xff0c 包括vector list set map等类 xff1b 另一种组件是用以操作这些容器的所谓的泛型算法包括find
  • STM32 LoRa无线数传模块 PC通过串口传输数据到单片机

    STM32 PC通过串口助手无线传输数据到单片机 之前学习了STM32单片机 xff0c 使用正点原子的精英板 两个TTL 转LoRa 半双工无线数传模块 xff0c 通过PC机串口助手 xff0c 向32单片机传输数据 xff0c 接收数
  • 如何使用 datax 将 mysql 中的数据拉取到 hive ?

    需求 使用datax将mysql中的数据拉取到hive的ods层 步骤 首先在mysql中确定好需要拉取的表user extend xff0c 然后对应在hive中创建好空表 xff0c 等待拉取 这里对应创建的hive表格如下 CREAT
  • C语言实现TCP客户端、服务器

    服务器 include lt stdio h gt include lt sys socket h gt include lt netinet in h gt include lt arpa inet h gt include 34 str
  • 树莓派控制无人机实现定点降落(概述目录)

    最近在做一个无人机与车协同的项目 xff0c 无人机需要比较准确地落到车的平台上 xff0c 而且因为经费较少只能用树莓派 xff0c 我的思路以及在调试过程中遇到的问题 xff0c 将公布在我接下来的博文里 这里列个目录 xff1a 树莓
  • C语言字符串常用函数总结(持续更新)

    最近在重温C语言的一些基础知识 xff0c 感觉C语言字符串操作还是比较难的 xff0c 在学习的过程中总结了一些常用的字符串相关函数 xff0c 包括C语言字符串输入 字符串输入 计算字符串长度 字符串赋值 字符串分割 字符串拼接 字符串
  • git tag和branch的关系

    tag类似于从commit发展出来的一个可写的玩具分支 它和branch很像 xff0c 但是可以快速取消所有修改 更多是用于快照查看的 如果它基于的commit被ammend变化了 xff0c 他俩的commit id 就会不一样了 xf

随机推荐

  • git命令之分支管理和Tag标签

    x1f4dd 个人简介 个人主页 xff1a 我是段段 x1f64b x1f34a 博客领域 xff1a 编程基础 前端 x1f4bb x1f345 写作风格 xff1a 干货 xff01 干货 xff01 都是干货 xff01 x1f35
  • 4个方面轻松搞定进度条

    不管是在APP还是PC xff0c 不管是Loading页 xff0c 还是在音乐播放器中 xff0c 进度条的运用都非常广泛 xff0c 形式也多种多样 xff0c 让人眼花缭乱 做为一个交互设计新手 xff0c 项目中也经常碰到进度条设
  • Ubuntu18.04安装ROS初始化rosdep阶段报错的解决方案

    在运行rosdep update时出现 reading in sources list data from etc ros rosdep sources list d ERROR unable to process source https
  • 菜鸡的ROS学习笔记(image_transport)

    菜鸡的ROS学习笔记 xff08 image transport xff09 image transport 这一部分是搬运的ROS wiki中的介绍 xff0c 主要是image transport这个包的用法 xff0c 之后我会把它尽
  • MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解

    MS5611气压计数据采集 模拟IIC 温度采集 相对高度求解 1 MS5611气压计属性 1 1 基础属性 MS5611使用24位ADC 可以采集温度和气压 xff0c 并且温度可以用来补偿气压 xff0c MS5611在出厂时进行了校准
  • 嵌入式物联网【数据处理篇】C 语言char类型与int类型的转化

    char和int的转换有两种方式 这两种方式适合于在输出时使用 最简单的方法就是利用ASSCII码的差值 直接用char的值减去 0 就行了 eg char nbsp a nbsp 9 int nbsp a a 0 另一个就是要利用c语言的
  • QT数据库:在QT中多线程访问mysql数据库的问题(已解决)

    一 可以便捷的使用多线程并发类QtConcurrent解决 关于类的使用请参考博客 便捷的使用多线程并发类QtConcurrent解决Qt在槽函数中执行耗时操作导致界面卡住的问题 吻等离子的博客 CSDN博客 二 出现问题 QT使用全局db
  • RS485、RS232、TTL的电平以及数据的收发

    目录 一 RS232 1 RS232标准接口定义 2 RS232串口线颜色定义 3 RS232串口接线方法 4 RS232的电平 二 RS485 xff08 基于MAX85的收发介绍 xff09 1 RS485标准接口定义 2 RS485串
  • 软件使用:如何彻底把VMware卸载干净

    1 禁用VM虚拟机服务 首先 xff0c 需要停止虚拟机VMware相关服务 按下快捷键WIN 43 R xff0c 打开windows运行对话框 xff0c 输入services msc 点击确定 在服务管理中 xff0c 找到VM开头的
  • Qt编译器MinGW和MSVC的区别

    一 两者的区别 1 MSVC 即Microsoft Visual C Compiler 即微软自己的编译器 我们下载Windows下的OpenCV时 解压后里面有两个文件夹 一个是build 一个是source build这个文件夹实际上是
  • Visual Studio快捷键(超全)

    目录 常用 xff1a 一 文件相关 二 编辑搜索相关 三 导航视图相关 四 项目相关 五 生成相关 六 调试相关 七 调试相关 八 分析相关 九 工具相关 十 扩展相关 十一 窗口相关 十二 帮助相关 常用 xff1a ctrl 43 x
  • 【软件使用】MarkText下载安装与汉化设置 (markdown快捷键收藏)

    一 安装与汉化 对版本没要求的可以直接选择 3 免安装的汉化包 1 下载安装MarkText MaxText win64 https github com marktext marktext releases download v0 17
  • 嵌入式【协议篇】CAN协议原理

    nbsp 一 CAN协议介绍 1 简介 CAN是控制器局域网络 Controller Area Network CAN 的简称 是一种能够实现分布式实时控制的串行通信网络 其实可以简单把CAN通信理解成开一场电话会议 当一个人讲话时其他人就
  • 曲阜师范大学831学姐高分背诵笔记(完整版)

    导论部分 1 微格教学 18 名词解释 答 微格教学称为 微型教学 xff0c 也称为 小型教学 所谓 微格教学 xff0c 就是将复杂的教学过程分解成许多容易掌握的具体的单一的技能 xff0c 如 导读技能 34 讲授技能 提问技能 等
  • STM32 【FreeRTOS HAL库】创建任务

    任务也不是很复杂的东西 简单得说 创建一个任务 你得提供它的执行函数 你得提供它的栈的大小 函数的执行空间 函数的优先级等重要的条件 因为任务在运行中 任务函数有调用关系 有局部变量 这些都保存在任务的栈里面 任务有可能被切换 有可能被暂停
  • 函数实现是否应该放在头文件

  • Microsoft Visual Studio C++2022 Windows 11 SDK环境

    Microsoft Visual Studio C 43 43 2022 Windows 11 SDK环境 1 安装2 环境变量本文为作者 难拳 原创 xff0c 转载请注明出处 1 安装 Visual Studio 2022适用于Wind
  • 【原创】浅谈指针(十)链表的写法

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 前言 最近我又
  • AB实现双方通信

    题目要求 xff1a 通过C语言编写一个程序 xff0c 程序中需要有两个进程 xff0c 假设这两个进程是A和B xff0c 通过这两个进程模拟一个类似QQ聊天的情景 xff0c A进程和B进程分别代表通话一方 xff0c A进程能够发消
  • 串口传图显示

    串口传图 使用串口通信协议传输一张图像到SDRAM存储后VGA协议显示到屏幕 工程设计 图片生成 使用小梅哥资源中的Picture2Hex软件生成任意分辨率的图片 xff08 我这里选择640 480 xff09 matlab将得到合适分辨