OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2147|回复: 2

新手求助,MINI3开发板如何完成串口输入并在lcd上显示。

[复制链接]

4

主题

8

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-12-23
在线时间
2 小时
发表于 2018-7-10 16:29:46 | 显示全部楼层 |阅读模式
12金钱
主要问题如题所示


外接串口是一个测距模块,串口数据格式(协议)为 :ma 0e 00000000 0000026f 00000258 000002d2 1050 bf 00032603 a0:0
mc 07 0000081f 000006f8 00000727 00000000 1053 b8 0003262f a0:0
mr 07 0000076b 0000063a 00000669 00000000 1053 b8 40224022 a0:0


想编写一个代码,将其输出并在LCD屏上显示。


利用了增值资料里,北斗模块的串口2代码。 1.设置输入为PA.3 输出 PA.2(在这里也用不到)
                                                               2.设置DMA模式传输
                                                               3.判断是否结束一组数据用的是 10ms 判断方法 其实上述就是北斗那个串口2的代码 没有什么变动
                                                               4.主函数除了初始化,while(1)打印一行字什么别的也没干
                                                               5.为了方便看       每次往数据寄存器里写数据的时候 都在LCD上显示




在最后附上代码



遇见的问题是(运行结果)




个人分析:      串口肯定接收到了数据触发中断,  我想象中的结果是 lcd上飞快闪动 接收数据寄存器的值 但只显示了一个字母p(什么鬼?)

                      求助一种方法 或者有类似这种 带格式的 数据输入 处理的例程  (我也写过最简单的 串口2DMA输入 然后在lcd显示(u32)dma rec buf的值,每次都是空白,usart2->dr 在lcd显示也是空白,是lcd不能用showstring显示他们,还是他们根本就没有输入? 如果没有 为什么会产生中断?    头大)

                      为了实现这个功能已经各种方式尝试了接近一周,基础不是很好,另外上述只是最后一种尝试的方式。deadline 在即,真心希望得到各位大佬的帮助!







IMG_0029.JPG

followingrobot.rar

5.46 MB, 下载次数: 21

keil代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

8

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-12-23
在线时间
2 小时
 楼主| 发表于 2018-7-10 16:31:28 | 显示全部楼层
_align(8) u8 USART2_TX_BUF[USART2_MAX_SEND_LEN];         //·¢ËÍ»º³å,×î´óUSART2_MAX_SEND_LEN×Ö½Ú
#ifdef USART2_RX_EN                                                                   //Èç¹ûʹÄÜÁ˽ÓÊÕ             
//´®¿Ú½ÓÊÕ»º´æÇø        
u8 USART2_RX_BUF[USART2_MAX_RECV_LEN];                                 //½ÓÊÕ»º³å,×î´óUSART2_MAX_RECV_LEN¸ö×Ö½Ú.



//ͨ¹ýÅжϽÓÊÕÁ¬Ðø2¸ö×Ö·ûÖ®¼äµÄʱ¼ä²î²»´óÓÚ10msÀ´¾ö¶¨ÊDz»ÊÇÒ»´ÎÁ¬ÐøµÄÊý¾Ý.
//Èç¹û2¸ö×Ö·û½ÓÊÕ¼ä¸ô³¬¹ý10ms,ÔòÈÏΪ²»ÊÇ1´ÎÁ¬ÐøÊý¾Ý.Ò²¾ÍÊdz¬¹ý10msûÓнÓÊÕµ½
//ÈκÎÊý¾Ý,Ôò±íʾ´Ë´Î½ÓÊÕÍê±Ï.
//½ÓÊÕµ½µÄÊý¾Ý״̬
//[15]:0,ûÓнÓÊÕµ½Êý¾Ý;1,½ÓÊÕµ½ÁËÒ»ÅúÊý¾Ý.
//[14:0]:½ÓÊÕµ½µÄÊý¾Ý³¤¶È
u16 USART2_RX_STA=0;            
void USART2_IRQHandler(void)
{
        u8 res;            
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//½ÓÊÕµ½Êý¾Ý
        {         LCD_ShowString(30,40,209,119,16,"Range_deca[0]");

        res =USART_ReceiveData(USART2);               
                if(USART2_RX_STA<USART2_MAX_RECV_LEN)                //&raquo;&sup1;&iquest;&Eacute;&Ograve;&Ocirc;&frac12;&Oacute;&Ecirc;&Otilde;&Ecirc;&yacute;&frac34;&Yacute;
                {
                        TIM_SetCounter(TIM4,0);//&frac14;&AElig;&Ecirc;&yacute;&AElig;÷&Ccedil;&aring;&iquest;&Otilde;                                         
                        if(USART2_RX_STA==0)TIM4_Set(1);                 //&Ecirc;&sup1;&Auml;&Uuml;&para;¨&Ecirc;±&AElig;÷4&micro;&Auml;&Ouml;&ETH;&para;&Iuml;
                        USART2_RX_BUF[USART2_RX_STA++]=res;                //&frac14;&Ccedil;&Acirc;&frac14;&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&micro;&Auml;&Ouml;&micro;       
                        LCD_ShowString(30,60,209,119,16,res);
                        LCD_ShowString(30,80,209,119,16,"Range_deca[0]");

                             
                }else
                {
                        USART2_RX_STA|=1<<15;                                        //&Ccedil;&iquest;&Ouml;&AElig;±ê&frac14;&Ccedil;&frac12;&Oacute;&Ecirc;&Otilde;&Iacute;ê&sup3;&Eacute;
                        LCD_ShowString(30,100,209,119,16,"Range_deca[0]");
                }
        }                                                                                           
}   
//&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;IO &acute;&reg;&iquest;&Uacute;2
//pclk1CLK1&Ecirc;±&Ouml;&Oacute;&AElig;&micro;&Acirc;&Ecirc;(Mhz)
//bound:&sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;          
void USART2_Init(u32 bound)
{  

        NVIC_InitTypeDef NVIC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);        // GPIOA&Ecirc;±&Ouml;&Oacute;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

        USART_DeInit(USART2);  //&cedil;&acute;&Icirc;&raquo;&acute;&reg;&iquest;&Uacute;2
                 //USART2_TX   PA.2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //&cedil;&acute;&Oacute;&Atilde;&Iacute;&AElig;&Iacute;ì&Ecirc;&auml;&sup3;&ouml;
  GPIO_Init(GPIOA, &GPIO_InitStructure); //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macrA2
   
    //USART2_RX          PA.3
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//&cedil;&iexcl;&iquest;&Otilde;&Ecirc;&auml;&Egrave;&euml;
  GPIO_Init(GPIOA, &GPIO_InitStructure);  //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macrA3
       
        USART_InitStructure.USART_BaudRate = bound;//&Ograve;&raquo;°&atilde;&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×&Ouml;&sup3;¤&Icirc;&ordf;8&Icirc;&raquo;&Ecirc;&yacute;&frac34;&Yacute;&cedil;&ntilde;&Ecirc;&frac12;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//&Ograve;&raquo;&cedil;&ouml;&Iacute;&pound;&Ouml;&sup1;&Icirc;&raquo;
        USART_InitStructure.USART_Parity = USART_Parity_No;//&Icirc;&THORN;&AElig;&aelig;&Aring;&frac14;&ETH;&pound;&Ntilde;é&Icirc;&raquo;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//&Icirc;&THORN;&Oacute;&sup2;&frac14;&thorn;&Ecirc;&yacute;&frac34;&Yacute;&Aacute;÷&iquest;&Oslash;&Ouml;&AElig;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //&Ecirc;&Otilde;·&cent;&Auml;&pound;&Ecirc;&frac12;
  
        USART_Init(USART2, &USART_InitStructure); //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&acute;&reg;&iquest;&Uacute;        2
  
        //&sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;&Eacute;è&Ouml;&Atilde;
//        USART2->BRR=(pclk1*1000000)/(bound);// &sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;&Eacute;è&Ouml;&Atilde;         
        //USART2->CR1|=0X200C;          //1&Icirc;&raquo;&Iacute;&pound;&Ouml;&sup1;,&Icirc;&THORN;&ETH;&pound;&Ntilde;é&Icirc;&raquo;.
        USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE);          //&Ecirc;&sup1;&Auml;&Uuml;&acute;&reg;&iquest;&Uacute;2&micro;&Auml;DMA·&cent;&Euml;&Iacute;
        UART_DMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)USART2_TX_BUF);//DMA1&Iacute;¨&micro;&Agrave;7,&Iacute;&acirc;&Eacute;è&Icirc;&ordf;&acute;&reg;&iquest;&Uacute;2,&acute;&aelig;&acute;&cent;&AElig;÷&Icirc;&ordf;USART2_TX_BUF
        USART_Cmd(USART2, ENABLE);                    //&Ecirc;&sup1;&Auml;&Uuml;&acute;&reg;&iquest;&Uacute;
       
#ifdef USART2_RX_EN                          //&Egrave;&ccedil;&sup1;&ucirc;&Ecirc;&sup1;&Auml;&Uuml;&Aacute;&Euml;&frac12;&Oacute;&Ecirc;&Otilde;
        //&Ecirc;&sup1;&Auml;&Uuml;&frac12;&Oacute;&Ecirc;&Otilde;&Ouml;&ETH;&para;&Iuml;
  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//&iquest;&ordf;&AElig;&ocirc;&Ouml;&ETH;&para;&Iuml;   
       
        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//&Ccedil;&Agrave;&Otilde;&frac14;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×&Oacute;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ&Iacute;¨&micro;&Agrave;&Ecirc;&sup1;&Auml;&Uuml;
        NVIC_Init(&NVIC_InitStructure);        //&cedil;ù&frac34;&Yacute;&Ouml;&cedil;&para;¨&micro;&Auml;&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;VIC&frac14;&Auml;&acute;&aelig;&AElig;÷
        TIM4_Init(999,7199);                //10ms&Ouml;&ETH;&para;&Iuml;
        USART2_RX_STA=0;                //&Ccedil;&aring;&Aacute;&atilde;
        TIM4_Set(0);                        //&sup1;&Oslash;±&Otilde;&para;¨&Ecirc;±&AElig;÷4
#endif                

}
//&acute;&reg;&iquest;&Uacute;2,printf &ordm;&macr;&Ecirc;&yacute;
//&Egrave;·±&pound;&Ograve;&raquo;&acute;&Icirc;·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;&sup2;&raquo;&sup3;&not;&sup1;&yacute;USART2_MAX_SEND_LEN×&Ouml;&frac12;&Uacute;
void u2_printf(char* fmt,...)  
{  
        va_list ap;
        va_start(ap,fmt);
        vsprintf((char*)USART2_TX_BUF,fmt,ap);
        va_end(ap);
        while(DMA_GetCurrDataCounter(DMA1_Channel7)!=0);        //&micro;&Egrave;&acute;&yacute;&Iacute;¨&micro;&Agrave;7&acute;&laquo;&Ecirc;&auml;&Iacute;ê&sup3;&Eacute;   
        UART_DMA_Enable(DMA1_Channel7,strlen((const char*)USART2_TX_BUF));         //&Iacute;¨&sup1;&yacute;dma·&cent;&Euml;&Iacute;&sup3;&ouml;&Egrave;&yen;
}
//&para;¨&Ecirc;±&AElig;÷4&Ouml;&ETH;&para;&Iuml;·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò                    
void TIM4_IRQHandler(void)
{        
        if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//&Ecirc;&Ccedil;&cedil;ü&ETH;&Acirc;&Ouml;&ETH;&para;&Iuml;
        {                                   
                USART2_RX_STA|=1<<15;        //±ê&frac14;&Ccedil;&frac12;&Oacute;&Ecirc;&Otilde;&Iacute;ê&sup3;&Eacute;
                TIM_ClearITPendingBit(TIM4, TIM_IT_Update  );  //&Ccedil;&aring;&sup3;&yacute;TIMx&cedil;ü&ETH;&Acirc;&Ouml;&ETH;&para;&Iuml;±ê&Ouml;&frac34;   
                TIM4_Set(0);                        //&sup1;&Oslash;±&Otilde;TIM4  
        }            
}
//&Eacute;è&Ouml;&Atilde;TIM4&micro;&Auml;&iquest;&ordf;&sup1;&Oslash;
//sta:0&pound;&not;&sup1;&Oslash;±&Otilde;;1,&iquest;&ordf;&AElig;&ocirc;;
void TIM4_Set(u8 sta)
{
        if(sta)
        {
      
                TIM_SetCounter(TIM4,0);//&frac14;&AElig;&Ecirc;&yacute;&AElig;÷&Ccedil;&aring;&iquest;&Otilde;
                TIM_Cmd(TIM4, ENABLE);  //&Ecirc;&sup1;&Auml;&Uuml;TIMx       
        }else TIM_Cmd(TIM4, DISABLE);//&sup1;&Oslash;±&Otilde;&para;¨&Ecirc;±&AElig;÷4          
}
//&Iacute;¨&Oacute;&Atilde;&para;¨&Ecirc;±&AElig;÷&Ouml;&ETH;&para;&Iuml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
//&Otilde;&acirc;&Agrave;&iuml;&Ecirc;&frac14;&Ouml;&Otilde;&Ntilde;&iexcl;&Ocirc;&ntilde;&Icirc;&ordf;APB1&micro;&Auml;2±&para;&pound;&not;&para;&oslash;APB1&Icirc;&ordf;36M
//arr&pound;&ordm;×&Ocirc;&para;&macr;&Ouml;&Oslash;×°&Ouml;&micro;&iexcl;&pound;
//psc&pound;&ordm;&Ecirc;±&Ouml;&Oacute;&Ocirc;¤·&Ouml;&AElig;&micro;&Ecirc;&yacute;                 
void TIM4_Init(u16 arr,u16 psc)
{       
        NVIC_InitTypeDef NVIC_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //&Ecirc;±&Ouml;&Oacute;&Ecirc;&sup1;&Auml;&Uuml;//TIM4&Ecirc;±&Ouml;&Oacute;&Ecirc;&sup1;&Auml;&Uuml;   
       
        //&para;¨&Ecirc;±&AElig;÷TIM3&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
        TIM_TimeBaseStructure.TIM_Period = arr; //&Eacute;è&Ouml;&Atilde;&Ocirc;&Uacute;&Iuml;&Acirc;&Ograve;&raquo;&cedil;&ouml;&cedil;ü&ETH;&Acirc;&Ecirc;&Acirc;&frac14;&thorn;×°&Egrave;&euml;&raquo;&icirc;&para;&macr;&micro;&Auml;×&Ocirc;&para;&macr;&Ouml;&Oslash;×°&Ocirc;&Oslash;&frac14;&Auml;&acute;&aelig;&AElig;÷&Ouml;&Uuml;&AElig;&Uacute;&micro;&Auml;&Ouml;&micro;       
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //&Eacute;è&Ouml;&Atilde;&Oacute;&Atilde;&Agrave;&acute;×÷&Icirc;&ordf;TIMx&Ecirc;±&Ouml;&Oacute;&AElig;&micro;&Acirc;&Ecirc;&sup3;&yacute;&Ecirc;&yacute;&micro;&Auml;&Ocirc;¤·&Ouml;&AElig;&micro;&Ouml;&micro;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //&Eacute;è&Ouml;&Atilde;&Ecirc;±&Ouml;&Oacute;·&Ouml;&cedil;&icirc;:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM&Iuml;ò&Eacute;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&Auml;&pound;&Ecirc;&frac12;
        TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //&cedil;ù&frac34;&Yacute;&Ouml;&cedil;&para;¨&micro;&Auml;&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;TIMx&micro;&Auml;&Ecirc;±&frac14;&auml;&raquo;ù&Ecirc;&yacute;&micro;&yen;&Icirc;&raquo;

        TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //&Ecirc;&sup1;&Auml;&Uuml;&Ouml;&cedil;&para;¨&micro;&Auml;TIM4&Ouml;&ETH;&para;&Iuml;,&Ocirc;&Ecirc;&ETH;í&cedil;ü&ETH;&Acirc;&Ouml;&ETH;&para;&Iuml;

                   
        NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;//&Ccedil;&Agrave;&Otilde;&frac14;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;                //×&Oacute;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ&Iacute;¨&micro;&Agrave;&Ecirc;&sup1;&Auml;&Uuml;
        NVIC_Init(&NVIC_InitStructure);        //&cedil;ù&frac34;&Yacute;&Ouml;&cedil;&para;¨&micro;&Auml;&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;VIC&frac14;&Auml;&acute;&aelig;&AElig;÷
       
}
#endif                 
///////////////////////////////////////USART2 DMA·&cent;&Euml;&Iacute;&Aring;&auml;&Ouml;&Atilde;&sup2;&iquest;·&Ouml;//////////////////////////////////                               
//DMA1&micro;&Auml;&cedil;÷&Iacute;¨&micro;&Agrave;&Aring;&auml;&Ouml;&Atilde;
//&Otilde;&acirc;&Agrave;&iuml;&micro;&Auml;&acute;&laquo;&Ecirc;&auml;&ETH;&Icirc;&Ecirc;&frac12;&Ecirc;&Ccedil;&sup1;&Igrave;&para;¨&micro;&Auml;,&Otilde;&acirc;&micro;&atilde;&Ograve;&ordf;&cedil;ù&frac34;&Yacute;&sup2;&raquo;&Iacute;&not;&micro;&Auml;&Ccedil;é&iquest;&ouml;&Agrave;&acute;&ETH;&THORN;&cedil;&Auml;
//&acute;&Oacute;&acute;&aelig;&acute;&cent;&AElig;÷->&Iacute;&acirc;&Eacute;è&Auml;&pound;&Ecirc;&frac12;/8&Icirc;&raquo;&Ecirc;&yacute;&frac34;&Yacute;&iquest;í&para;&Egrave;/&acute;&aelig;&acute;&cent;&AElig;÷&Ocirc;&ouml;&Aacute;&iquest;&Auml;&pound;&Ecirc;&frac12;
//DMA_CHxMA&Iacute;¨&micro;&Agrave;CHx
//cpar:&Iacute;&acirc;&Eacute;è&micro;&Oslash;&Ouml;·
//cmar:&acute;&aelig;&acute;&cent;&AElig;÷&micro;&Oslash;&Ouml;·   
void UART_DMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar)
{
        DMA_InitTypeDef DMA_InitStructure;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);        //&Ecirc;&sup1;&Auml;&Uuml;DMA&acute;&laquo;&Ecirc;&auml;
  DMA_DeInit(DMA_CHx);   //&frac12;&laquo;DMA&micro;&Auml;&Iacute;¨&micro;&Agrave;1&frac14;&Auml;&acute;&aelig;&AElig;÷&Ouml;&Oslash;&Eacute;è&Icirc;&ordf;&Egrave;±&Ecirc;&iexcl;&Ouml;&micro;
        DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;  //DMA&Iacute;&acirc;&Eacute;èADC&raquo;ù&micro;&Oslash;&Ouml;·
        DMA_InitStructure.DMA_MemoryBaseAddr = cmar;  //DMA&Auml;&Uacute;&acute;&aelig;&raquo;ù&micro;&Oslash;&Ouml;·
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;  //&Ecirc;&yacute;&frac34;&Yacute;&acute;&laquo;&Ecirc;&auml;·&frac12;&Iuml;ò&pound;&not;&acute;&Oacute;&Auml;&Uacute;&acute;&aelig;&para;&Aacute;&Egrave;&iexcl;·&cent;&Euml;&Iacute;&micro;&frac12;&Iacute;&acirc;&Eacute;è
        DMA_InitStructure.DMA_BufferSize = 0;  //DMA&Iacute;¨&micro;&Agrave;&micro;&Auml;DMA&raquo;&ordm;&acute;&aelig;&micro;&Auml;&acute;ó&ETH;&iexcl;
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //&Iacute;&acirc;&Eacute;è&micro;&Oslash;&Ouml;·&frac14;&Auml;&acute;&aelig;&AElig;÷&sup2;&raquo;±&auml;
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //&Auml;&Uacute;&acute;&aelig;&micro;&Oslash;&Ouml;·&frac14;&Auml;&acute;&aelig;&AElig;÷&micro;&Yacute;&Ocirc;&ouml;
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;  //&Ecirc;&yacute;&frac34;&Yacute;&iquest;í&para;&Egrave;&Icirc;&ordf;8&Icirc;&raquo;
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //&Ecirc;&yacute;&frac34;&Yacute;&iquest;í&para;&Egrave;&Icirc;&ordf;8&Icirc;&raquo;
        DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;  //&sup1;¤×÷&Ocirc;&Uacute;&Otilde;&yacute;&sup3;&pound;&raquo;&ordm;&acute;&aelig;&Auml;&pound;&Ecirc;&frac12;
        DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA&Iacute;¨&micro;&Agrave; x&Oacute;&micro;&Oacute;&ETH;&Ouml;&ETH;&Oacute;&Aring;&Iuml;&Egrave;&frac14;&para;
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA&Iacute;¨&micro;&Agrave;x&Atilde;&raquo;&Oacute;&ETH;&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;&Auml;&Uacute;&acute;&aelig;&micro;&frac12;&Auml;&Uacute;&acute;&aelig;&acute;&laquo;&Ecirc;&auml;
        DMA_Init(DMA_CHx, &DMA_InitStructure);  //&cedil;ù&frac34;&Yacute;DMA_InitStruct&Ouml;&ETH;&Ouml;&cedil;&para;¨&micro;&Auml;&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;DMA&micro;&Auml;&Iacute;¨&micro;&Agrave;USART1_Tx_DMA_Channel&Euml;ù±ê&Ecirc;&para;&micro;&Auml;&frac14;&Auml;&acute;&aelig;&AElig;÷       
}
//&iquest;&ordf;&AElig;&ocirc;&Ograve;&raquo;&acute;&Icirc;DMA&acute;&laquo;&Ecirc;&auml;
void UART_DMA_Enable(DMA_Channel_TypeDef*DMA_CHx,u8 len)
{
        DMA_Cmd(DMA_CHx, DISABLE );  //&sup1;&Oslash;±&Otilde; &Ouml;&cedil;&Ecirc;&frac34;&micro;&Auml;&Iacute;¨&micro;&Agrave;        
        DMA_SetCurrDataCounter(DMA_CHx,len);//DMA&Iacute;¨&micro;&Agrave;&micro;&Auml;DMA&raquo;&ordm;&acute;&aelig;&micro;&Auml;&acute;ó&ETH;&iexcl;       
        DMA_Cmd(DMA_CHx, ENABLE);           //&iquest;&ordf;&AElig;&ocirc;DMA&acute;&laquo;&Ecirc;&auml;
}          
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-11 02:37:38 | 显示全部楼层
仿真找问题哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-16 04:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表