精华内容
下载资源
问答
  • 发觉用网络通嵌入式系统传输文件不成功,所以以后有时间再看看是怎么会,都是用U盘,是在太麻烦,下面是串口的方式 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具...

    发觉用网络通嵌入式系统传输文件不成功,所以以后有时间再看看是怎么会,都是用U盘,是在太麻烦,下面是串口的方式

    我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。个人觉得zmrx/zmtx没有lsz/lrz稳定,建议还是用后者。下面介绍一下lsz/lrz的使用方法。
         
          一、编译lrzsz并下载到开发板上
         从http://download.chinaunix.net/download/0007000/6293.shtml下一个lrzsz的tar包,解压缩后输入./configure,然后进入了src文件夹中,修改了src文件夹中的Makefile文件,配置为与手机对应的交叉编译器,运行make,ok!得到两个可执行文件sz,rz(或者 lsz,lrz),把它们下载到开发板linux系统的/bin目录下。
        
          二、情况1: PC机用windows操作系统
         如果PC机用的是windows操作系统,串口通信工具可以用系统自带的超级终端。下面介绍一下传输文件的方法。
          1、开发板-->PC机
             在开发板上输入 sz filename。
             在PC机上点击超级终端的菜单“传送”-> “接收文件”,选择下载的位置和Zmodem 与崩溃恢复协议,点击接收即可。
          2、PC机-->开发板
             在开发板上先进入/tmp 目录,然后输入 rz。
             在PC机上点击超级终端的菜单“传送”-> “发送文件”,选择目标文件和Zmodem 与崩溃恢复协议,点击发送即可。
    
          三、情况2: PC机用 linux 操作系统
         如果PC机用的是 linux 操作系统,串口通信工具可以用minicom。下面介绍一下传输文件的方法。
          1、如果是第一次使用minicom,需要进行minicom的设置:
             # minicom -s
          出现这样的配置界面:
                ┌───── [configuration]──────┐
                │ Filenames and paths                  │
                │ File transfer protocols              │
                │ Serial port setup                    │
                │ Modem and dialing                    │
                │ Screen and keyboard                  │
                │ Save setup as dfl                    │
                │ Save setup as..                      │
                │ Exit                                 │
                │ Exit from Minicom                    │
                └───────────────────┘
    
    
         选择Serial port setup, 会看到这样的选项:
    
                 A — Serial Device : /dev/ttyS0
                 B — lockfile Location : /var/lock 
                 C — Calling Program : 
                 D — Callout Program: 
                 E — Bps/par/Bits : 115200 8N1 
                 F — Hardware Flow Control : NO 
                 G — Software Flow Control : NO 
                 Change with setting? 
         输入前面对应的字母即可进入相应的选项。将选项A的值设置为/dev/ttyS0 表示是串口1,将选项E的值设置为115200,将选项F设置为NO(请根据实际情况配置).
         初始化设置中可以设置默认上传/下载的目录,传输协议参数,串口波特率等.设置完成后,选择”Save setup as dfl”,保存为默认设置.然后选择“Exit”,按Ctrl-A,再按z,即可进入Minicom的主界面:
    Welco┌─────────────────────────────────┐
         │                     Minicom Command Summary                       │
    OPTIO│                                                                   │
    Compi│          Commands can be called by CTRL-A                    │
         │                                                                   │
    Press│               Main Functions                  Other Functions     │
         │                                                                   │
         │ Dialing directory..D  run script (Go)....G | Clear Screen.......C │
         │ Send files.........S  Receive files......R | cOnfigure Minicom..O │
         │ comm Parameters....P  Add linefeed.......A | Suspend minicom....J │
         │ Capture on/off.....L  Hangup.............H | eXit and reset.....X │
         │ send break.........F  initialize Modem...M | Quit with no reset.Q │
         │ Terminal settings..T  run Kermit.........K | Cursor key mode....I │
         │ lineWrap on/off....W  local Echo on/off..E | Help screen........Z │
         │                                            | scroll Back........B │
         │                                                                   │
         │      Select function or press Enter for none.                     │
         │                                                                   │
         │             Written by Miquel van Smoorenburg 1991-1995           │
         │             Some additions by Jukka Lahtinen 1997-2000            │
         │             i18n by Arnaldo Carvalho de Melo 1998                 │
         └──────────────────────────────────┘
     CTRL-A Z for help | 38400 8N1 | NOR | Minicom 2.00.0 | VT102 |      Offline
    
    
    
          2、开发板-->PC机
             在开发板上输入 sz filename,然后会出现一个传输界面,传输完成后可以在你设置的默认下载目录里找到这个文件。
          
          3、PC机-->开发板
             在开发板上先进入/tmp 目录,然后输入 rz。
             按Ctrl-A,再按s,会出现一个选择文件的界面,选择你要传输的文件,回车后出现一个传输界面,传输完成后便可以在开发板的/tmp目录下找到这个文件了。


    1、准备工作

    首先确保你已经装了Linux系统,建立好了交叉编译环境。内核和根文件系统可以自己移植,如果只想在开发板厂商的软件环境上验证串口文件传输也可以。我在XP上安装的Redhat9.0,交叉编译器用的是友善之臂提供的arm-linux-gcc-4.3.2。

    2、下载工具包

    http://www.filewatcher.com/m/lrzsz-0.12.20.tar.gz.280938.0.0.html

    下载lrzsz-0.12.20.tar.gz,解压到我的工作目录/opt下,于是opt目录下多了目录lrzsz-0.12.20目录,解压目录可以自己定。

    3、交叉编译

    进入lrzsz-0.12.20目录,在终端输入以下命令:

    ./configure --cache-file=arm-linux.cache

    vi arm-linux.cache

    在打开的arm-linux.cache文件里做如下的修改:

    ac_cv_prog_CC=${ac_cv_prog_CC=gcc}

    改为:ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gcc}

    ./configure --cache-file=arm-linux.cache --prefix=/lrzsz

    make

    make install



     linker from : http://blog.csdn.net/rn7ps8bn/article/details/4933233

     

     

     

     

    转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3795568.html

    展开全文
  • 这是用VS2010+Mscomm控件编程实现了串口调试助手的代码,并能把下位机串口通过串口发送过来的数据存储在电脑F盘的data.txt文件中(具体位置和文件名可自己改),具体一步一步是怎么实现的,可以参考我的博客:...
  • 通过参考一些网上的实例,我明白了串口怎么简单的进行通信交流,但是我所需要的还是图片等大文件在串口中的传输,串口传输通过二进制位进行单位传输的,所以传输速度比较慢,在一开始,我将图片转换成二进制,然后...

    第一次接触串口,写点东西加深自己对串口的印象:

    通过参考一些网上的实例,我明白了串口怎么简单的进行通信交流,但是我所需要的还是图片等大文件在串口中的传输,串口传输是通过二进制位进行单位传输的,所以传输速度比较慢,在一开始,我将图片转换成二进制,然后传输,在另一端口,接收到二进制数据并转换成图片形式,代码如下:

    private void Sendpicture() {
                int i = 0;
                if (!port.IsOpen)
                {
                    MessageBox.Show("端口已被关闭!");
                    return;
                }
                UpdateStutas();
                ///清理残余的缓冲区
                port.DiscardInBuffer();
                port.DiscardOutBuffer();
                //写入图片信息从固定文件夹中得到信息
                FileStream fs = new FileStream(@"E:\图片转换测试\发送图片\1.jpg", FileMode.Open, FileAccess.Read);
               
                //将其读作二进制数UTF-8编码
                BinaryReader br = new BinaryReader(fs);
                int length = (int)fs.Length;
                List<byte> buf = new List<byte>();//填充到这个临时列表中  
                while (length > 0)
                {
                    byte tempByte = br.ReadByte();
                        buf.Add(tempByte);
                        length--;
                   }
                       
                fs.Close();
                br.Close();
                //转换列表为数组后发送  
                port.Write(buf.ToArray(), 0, buf.Count);
                //记录发送的字节数  
                sendnum.Text = "发送字节数:" + buf.Count;
            }
    
            public void RecivePicdata(object sender, SerialDataReceivedEventArgs e) {
                ///数据长度
                int count = port.BytesToRead;
                string msg = null;
                //{
                byte[] buff = new byte[count];
                ///接收数据
                port.Read(buff, 0, count);
    
                //将字节数据转换为二进制数据
               FileStream fs = new FileStream(@"E:\图片转换测试\接收图片\2.jpg", FileMode.Append, FileAccess.Write); //创建1.jpg图片
                BinaryWriter bw = new BinaryWriter(fs);
                foreach (byte buf in buff)
                {
                    bw.Write(buf);
    
            
                }
                fs.Close();
                bw.Close();
           
    
     
            }

    在这之中我还发现了一个非常困扰我的问题,就是串口的缓冲区问题,在一开始,我所传输图片只收到4096个字节,郁闷了很久才明白是缓冲区的原因,串口默认缓冲区是4k,而在缓冲区之外的数据就直接清除了,所以如果单次传输大文件时,要重新设置串口的输入缓冲区ReadBufferSize和输出缓冲区WriteBufferSize这两个属性,下面是串口的几个缓冲区,第一次接触,当初对我真是折磨王啊。

    串口属性:BytesToRead(获取接收缓冲区中数据的字节数)--这里提到的是“接收缓冲区”

    串口属性:ReadBufferSize(获取或设置 System.IO.Ports.SerialPort 输入缓冲区的大小)---这里提到的是“输入缓冲区”

    串口属性:BytesToWrite(获取发送缓冲区中数据的字节数)---这里提到的是“发送缓冲区”

    串口属性:WriteBufferSize(获取或设置串行端口输出缓冲区的大小)---这里提到的是“输出缓冲区”

    串口属性:DiscardOutBuffer(丢弃来自串行驱动程序的传输缓冲区的数据)---这里提到的是“传输缓冲区”

     

    转载于:https://www.cnblogs.com/xiaobaidashu/p/9361421.html

    展开全文
  • 之前项目中有个地方要实现一个功能,就是通过非终端串口传输文件,这里将其作为一个小功能模块,简单的介绍一下自己是如何实现的!SecureCRT超级终端上可以通过lrz等工具通过命令传输文件这个就不介绍,之前的博客也...

    之前项目中有个地方要实现一个功能,就是通过非终端串口传输文件,这里将其作为一个小功能模块,简单的介绍一下自己是如何实现的!SecureCRT超级终端上可以通过lrz等工具通过命令传输文件这个就不介绍,之前的博客也有写过怎么编译移植使用这个工具,这次是自己来编码实现通过非终端调试串口来安全可靠的传输任何文件。

    其实刚开始想的时候觉得有一点难度,一是要自己定协议,如何定协议才合理呢?二是当时自己也想的有点复杂,一个文件所包含的文件信息又有哪些呢?通过串口传输过来的数据又需要怎样的及时的写入文件呢?传输文件又用到什么校验算法呢?反正一开始自己脑子里就是一大堆的问题!想出问题来了就好说了!既然是C语言,还是自己定协议,那当然就是一步一步的来了!

    我们这个要结合上位机软件,上位机软件是别人写的!憋屈自己不会上位机,文件校验用的是SHA1校验算法,博客里面也有!

    首先项目需求是我们要传输的文件大小不会很大,大到天也不会超过5M,协议我自己是这样定的:

    ------------------------------------------------------------------------------------------------------------------------
    10字节,传输的字节总长度  |                    255字节 文件名               | 20字节的SHA1校验码(直接)
    -------------------------------------------------------------------------------------------------------------------------

    对于一个文件的关键信息,就是文件名,文件数据长度!有了这两个关键信息,这样就可以在Linux下通过C应用编程实现还原传输过来的文件!

    整个过程分为两次数据包传送:

    第一个数据包为固定长度 285字节,传输的字节数还有文件名上位机都是以字符串的形式(也就是ASC形式)传输过来的,后面20字节是直接传输,不用转化!字节数和文件名长度不够的地方都是以空格填充!

    第二个数据包是直接传输文件里面的数据,把文件里面的数据原封不动的传输过来,同时下位机这边接收数据,malloc出一片内存来暂时存放临时数据,文件数据传输完毕后,计算20字节SHA1校验码,把生成的校验码与上位机传输过来的校验码对比,如果完全一致,表示传输成功!

    串口read数据是用非阻塞的方式!这里第一个数据包传输完后会向上位机返回一个确认信号!这个也是完全自定义!

    这里简单的贴上下位机部分处理的代码!上位机COM测试程序我这里没有源码,只有一个应用程序,传上来也没什么大用!当然这里处理部分的代码只能作为参考!前期写的还是比较粗糙!(这个是测试部分的代码)

    [cpp] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. static void chmodfile777(void)//改变传输过来文件的权限 这里调用一个shell脚本  
    2. {  
    3.     int status = 0;  
    4.       
    5.     status = system("./Appupdate.sh");   
    6.       
    7.     if(-1 == status)    
    8.        {    
    9.             printf("system error!");    
    10.        }    
    11.        else    
    12.        {    
    13.             printf("exit status value = [0x%x]\n", status);       
    14.        }  
    15.   
    16. }  
    17.   
    18.   
    19. struct file_inode  
    20. {  
    21.      int  filesize;  
    22.      char filename[256];  
    23.      char shal[21];  
    24.       
    25. }fileinfo;  
    26.   
    27.   
    28. ------------------------------------------------------------------  
    29. 10字节,传输的字节总长度|    255字节 文件名     | 20字节的SHA1校验码  
    30. ------------------------------------------------------------------  
    31.   
    32. void Cmd_Func_IAP(char (*p)[ONEMSGLENTH])  
    33. {  
    34.     int len;  
    35.     int wlen;  
    36.     static int nreadsize = 0;  
    37.     int itemfd = -1;    //文件fd  
    38.       
    39.     char temp[10] = {'\0'};  
    40.     char tmp0[300] = {'\0'};  
    41.     char str[25] = {'\0'};  
    42.       
    43.     SHA1Context sha;  
    44.     int i, err;  
    45.     uint8_t Message_Digest[20];  
    46.       
    47.     char *Pstrcache = NULL;  
    48.     int equal = 0;  
    49.     int fnamesize = 0;  
    50.       
    51.     nreadsize = 0;  
    52.       
    53.     while(nreadsize < 285)  
    54.     {  
    55.         //第一步 上位机先发送一个数据包 接收成功 下位机返回一个信号 EA 数据包包括4字节文件长度 255字节文件名 20字节校验码 包括 (  报文长度 10 - 255 - 20 )  
    56.         len = read(fd, temp, 8);   
    57.         //printf("Alen = %d\n", len);  
    58.           
    59.         if(len > 0)  
    60.         nreadsize += len;  
    61.       
    62.         temp[len] = '\0';  
    63.           
    64.         strcat(tmp0,temp);  
    65.         bzero(temp,10);  
    66.         //printf("nreadsize = %d\n", nreadsize);  
    67.     }  
    68.       
    69.     //printf("aaaaaaaaaaaaaaaaaaaaaaa\n");  
    70.     //printf("readsizelen = %d\n", nreadsize);  
    71.       
    72.     tmp0[285] = '\0';  
    73.       
    74.       
    75.     //开始解析数据  
    76.     strncpy(str,tmp0,10);  
    77.     str[10] = '\0';  
    78.     fileinfo.filesize = atoi(str);  
    79.       
    80.     strncpy(&(fileinfo.filename[0]), &(tmp0[10]), 255);  
    81.     strncpy(&(fileinfo.shal[0]), &(tmp0[265]), 20);  
    82.       
    83.     fileinfo.filename[255] = '\0';  
    84.       
    85.     //printf("fileinfo.filesize = %d\n", fileinfo.filesize);  
    86.     //printf("fileinfo.filename = %s\n", fileinfo.filename);  
    87.       
    88.     //printf("\nfileinfo.shal = ");  
    89.   
    90.       
    91.     while(fileinfo.filename[fnamesize] != 32) //文件名多余的用空格填充 空格就是32  
    92.     {  
    93.         fnamesize++;  
    94.     }  
    95.       
    96.     memset(tmp0, '\0' ,300);  
    97.     strncpy(tmp0,"/opt/START/", strlen("/opt/START/"));  
    98.       
    99.     tmp0[strlen("/opt/START/")] = '\0';  
    100.     fileinfo.filename[fnamesize] = '\0';  
    101.       
    102.     strcat(tmp0, fileinfo.filename);  
    103.       
    104.   
    105.     itemfd = open(tmp0, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);   
    106.   
    107.     if(itemfd != -1) //如果成功 开始传输文件数据   
    108.     {  
    109.         fileinfo.filesize = fileinfo.filesize - 285;  
    110.           
    111.         Pstrcache = (char *)malloc( sizeof(char)*(fileinfo.filesize) );  
    112.         nreadsize = 0;  
    113.         len = 0;  
    114.         if(Pstrcache != NULL)  
    115.         {  
    116.               
    117.             while(nreadsize < fileinfo.filesize )  
    118.             {  
    119.                 len = read(fd, &(Pstrcache[nreadsize]),fileinfo.filesize);  
    120.                   
    121.                 if(len > 0)  
    122.                 nreadsize += len;  
    123.                 //printf("nreadsize = %d\n", nreadsize);  
    124.                 len = 0;  
    125.             }  
    126.         }  
    127.           
    128.         //校验 检查校验 写入文件  
    129.         err = SHA1Reset(&sha);  
    130.         err = SHA1Input(&sha,(const unsigned char *) Pstrcache,fileinfo.filesize);  
    131.         err = SHA1Result(&sha, Message_Digest);  
    132.   
    133.         for(i = 0; i < 20 ; ++i)  
    134.         {  
    135.             //printf("%02X ", Message_Digest[i]);  
    136.               
    137.             if( Message_Digest[i] != fileinfo.shal[i] ) //比较校验码 如果不相同表示接受文件失败  
    138.             {  
    139.                 printf("recevice fail!\n");  
    140.                 len = write(fd, "update fail!\n",sizeof("update fail!\n") );  
    141.                 equal = 1;  
    142.                 //break;  
    143.             }  
    144.               
    145.         }  
    146.   
    147.           
    148.         if(equal != 1)//表示传输的文件完全正确  
    149.         {  
    150.             wlen = write(itemfd, Pstrcache, fileinfo.filesize);   
    151.               
    152.             len = write(fd, "update succeed!\n",sizeof("update succeed!\n") );  
    153.               
    154.             chmodfile777();//通过脚本 将下载后的权限改为可执行  
    155.         }  
    156.       
    157.     }  
    158.   
    159.     free(Pstrcache);  
    160.     Pstrcache = NULL;//避免野指针  
    161.   
    162. }  

    反正测试代码当初配合上位机测试的时候是没有任何问题的,二进制文件、*.txt、.c等文件格式都能成功通过串口传输过来。其实做出来的过程也是相当的简单,这个在百度上很少看到有相关的讲解,如何用C实现通过串口传输文件!这个也是完全从想到做到实现的一个过程!发现其实真的很简单!关于SHA1校验这个博客里面源码有介绍!
    展开全文
  • 目前在做一个基于STM32的无线模块收发,通过串口透传,我需要对传输的固件文件进行加密处理, 大概思想是对文件进行拆分,分为多帧发送,每帧后面加字符,但是由于文件大小未知, 我不知道怎么拆分,另外还有其他的...
  • linux开发板下面已经可以在调试窗口实现lrzsz的文件发送,接收功能。 老板要求通过RS485工作线,通过zmodem协议,来实现像调试串口下lrzsz这个功能,...调用lrzsz的话,怎么修改默认端口,让其通过485端口传输数据?
  • 我现在有一块7444的开发板,想实现7444通过串口传输命令给7444开发板上的另一模块cc2530(zigbee中的协调器),然后发送给给第三方开发板(只要当前cc2530能接收到命令就能直接发送数据到zigbee终端,以实现),然后...
  • 我现在有一块7444的开发板,想实现7444通过串口传输命令给7444开发板上的另一模块cc2530(zigbee中的协调器),然后发送给给第三方开发板(只要当前cc2530能接收到命令就能直接发送数据到zigbee终端,以实现),然后...
  • 之所以写这篇,是因为在网上看到...**实现功能:**通过识别关键词向串口发送对应内容 实现视频: 由于无法直接上传视频文件,所以放在了百度网盘里面,想知道实现的效果是怎么样的,可以自己下载视频去看看。 链接 提取

    之所以写这篇,是因为在网上看到这个资料很少,所以自己写一下就当作是记录。这个模块的识别率亲测还是很高的,就是商家那边不提供开源,要的话只能定制就很。。。。但是作为一个小功能需求也就够了。但是要大批量的话还要做自己的产品就不建议了。毕竟没有二次开发的东西不实用。
    硬件:snr6812、stm32f103、usb转ttl、杜邦线、喇叭
    **实现功能:**通过识别关键词向串口发送对应内容
    实现视频:
    由于无法直接上传视频文件,所以放在了百度网盘里面,想知道实现的效果是怎么样的,可以自己下载视频去看看。
    链接
    提取码:a0bl
    **采用通信:**串口通信
    识别函数设计:

    void Judgment_data(void){
    //	判断指令在这里添加你的操作
    	if((a1=='0')&& (a2=='4')){printf("语音控制已开启!\n");}
    	if((a1=='0')&& (a2=='5')){printf("灯已打开!\n");}
    	if((a1=='0')&& (a2=='6')){printf("灯已关闭\n");}
    	if((a1=='0')&& (a2=='7')){printf("收音机已打开!\n");}
    	if((a1=='0')&& (a2=='8')){printf("收音机已关闭!\n");}
    	if((a1=='8')&& (a2=='0')){printf("智能跟随模式已打开!\n");}
    	if((a1=='7')&& (a2=='0')){printf("智能跟随模式已关闭!\n");}
    	if((a1=='6')&& (a2=='0')){printf("已拨打第二个联系人!\n");}
    	if((a1=='5')&& (a2=='0')){printf("已拨打第一个联系人!\n");}
    	if((a1=='4')&& (a2=='0')){printf("已拨打第三个联系人!\n");}
    	if((a1=='3')&& (a2=='0')){printf("已挂掉电话!\n");}
    	if((a1=='2')&& (a2=='0')){printf("退下\n");}
    	if((a1=='9')&& (a2=='0')){printf("已全部打开\n");}
    	if((a1=='0')&& (a2=='0')){printf("已全部关闭\n");}
    	
    }
    

    DMA配置:

    ///USART2 DMA发送配置部分//	   		    
    //DMA1的各通道配置
    //这里的传输形式是固定的,这点要根据不同的情况来修改
    //从存储器->外设模式/8位数据宽度/存储器增量模式
    //DMA_CHx:DMA通道CHx
    //cpar:外设地址
    //cmar:存储器地址    
    void UART_DMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar)
    {
    	DMA_InitTypeDef DMA_InitStructure;
     	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);	//使能DMA传输
      DMA_DeInit(DMA_CHx);   //将DMA的通道1寄存器重设为缺省值
    	DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;  //DMA外设ADC基地址
    	DMA_InitStructure.DMA_MemoryBaseAddr = cmar;  //DMA内存基地址
    	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;  //数据传输方向,从内存读取发送到外设
    	DMA_InitStructure.DMA_BufferSize = 0;  //DMA通道的DMA缓存的大小
    	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //外设地址寄存器不变
    	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //内存地址寄存器递增
    	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;  //数据宽度为8位
    	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //数据宽度为8位
    	DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;  //工作在正常缓存模式
    	DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级 
    	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA通道x没有设置为内存到内存传输
    	DMA_Init(DMA_CHx, &DMA_InitStructure);  //根据DMA_InitStruct中指定的参数初始化DMA的通道USART1_Tx_DMA_Channel所标识的寄存器	
    } 
    //开启一次DMA传输
    void UART_DMA_Enable(DMA_Channel_TypeDef*DMA_CHx,u8 len)
    {
    	DMA_Cmd(DMA_CHx, DISABLE );  //关闭 指示的通道        
    	DMA_SetCurrDataCounter(DMA_CHx,len);//DMA通道的DMA缓存的大小	
    	DMA_Cmd(DMA_CHx, ENABLE);           //开启DMA传输
    }	   
    / 									 
    稍后会上传工程文件。
    
    
    
    
    
    展开全文
  • arm初学者常用软件

    千次阅读 2016-08-04 10:46:40
    软件安装 ARM的程序在PC机上编写完成。一般编写ARM程序的软件是ADS,可是在win7下安装总是停在100...一种是通过usb串口来发送文件(软件一般是dnw),另一种是通过网线来传输文件(软件一般是tftp)。 这都是在nor fla
  • Linux下的ioctl()函数

    2021-01-29 11:15:56
    Linux下的ioctl()函数 一、什么是ioctl  ioctl是设备驱动程序中对设备的I/O... 用户程序所作的只是通过命令码(cmd)告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做的事情.
  • 不过USB通信这块是完善的,另外本设计中还加入了一片pl2303 USB转口芯片,该芯片传出串口与STM32的UART1相连,可方便的通过串口下载程序,或打印log调试信息等。 在做这个毕业设计中,硬件的设计当时考虑了很多,...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    实例简单,有用户登录、传输文件、视频、画质调节、禁音检测、回音消除、自动增益、噪音抑制、视频控制等、 VC++搜索指定文件夹中的文件 VC++文件分割、合并工具 自绘了Button、CProgressCtrl、CAutoFont。主要...
  •  1.3.3如何传输文件至控制器存储区  1.3.4如何在SoMachine V3.1中更新Lexium 23 Plus库文件至V1.1.5.0  1.3.5Lexium 23 Plus库文件在安装后找不到Lexium 23的解决方法  1.3.6RETAIN与PERSISTENT断电数据类型  ...
  • VB网络编程实例

    千次下载 热门讨论 2007-05-29 15:46:04
    ◆ 01.htm 1、怎么用mscomm控件检测modem是否与计算机联接正确?2、如何用mscomm挂断modem与别的电话机间的连接?(已接通) ◆ 02.htm CWinInetConnection---一个封装了WinInet API函数的类 ◆ 03....

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

怎么通过串口传输文件