求助,f7用hal库串口5问题

2019-07-20 09:15发布

如题,问题是串口5不通了,指纹程序,本来用的是串口2,但是串口2一个io是以太网的控制脚,另一个复用也用不了,所以就改为串口5,只有串口5不占用别的脚,改完之后指纹模块初始化就不通了, 所以问题就是串口5不通,求各位坛友相助。[mw_shl_code=c,true]
UART_HandleTypeDef UART5_Handler;//UART¾ä±ú
//3õê¼»ˉIO ′®¿ú2
//bound:2¨ìØÂê          
void uart5_init(u32 bound)
{  
        GPIO_InitTypeDef GPIO_Initure;
        __HAL_RCC_GPIOD_CLK_ENABLE();                        //ê1ÄüGPIOcê±Öó
        __HAL_RCC_GPIOC_CLK_ENABLE();                        //ê1ÄüGPIOdê±Öó
        __HAL_RCC_UART5_CLK_ENABLE();                //ê1ÄüUSART5ê±Öó
       
        //GPIO¶Ë¿úéèÖÃ
        GPIO_Initure.Pin=GPIO_PIN_12;
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;//¸′óÃíÆíìêä3ö
        GPIO_Initure.Pull=GPIO_PULLUP;                //éÏà-
        GPIO_Initure.Speed=GPIO_SPEED_FAST;//¸ßËù
        GPIO_Initure.Alternate=GPIO_AF7_UART5;        //¸′óÃÎaUSART5
        HAL_GPIO_Init(GPIOC,&GPIO_Initure);                  
       
        GPIO_Initure.Pin=GPIO_PIN_2;       
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;//¸′óÃíÆíìêä3ö
        GPIO_Initure.Pull=GPIO_PULLUP;                //éÏà-
        GPIO_Initure.Speed=GPIO_SPEED_FAST;//¸ßËù
        GPIO_Initure.Alternate=GPIO_AF7_UART5;        //¸′óÃÎaUSART5
        HAL_GPIO_Init(GPIOD,&GPIO_Initure);          
        //UART 3õê¼»ˉéèÖÃ
        UART5_Handler.Instance=UART5;                                                                    //USART5
        UART5_Handler.Init.BaudRate=bound;                                                          //2¨ìØÂê
        UART5_Handler.Init.WordLength=UART_WORDLENGTH_8B; //×Ö3¤Îa8λêy¾Y¸ñê½
        UART5_Handler.Init.StopBits=UART_STOPBITS_1;            //ò»¸öí£Ö1λ
        UART5_Handler.Init.Parity=UART_PARITY_NONE;                    //ÎTÆæżD£Ñéλ
        UART5_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //ÎTó2¼tá÷¿Ø
        UART5_Handler.Init.Mode=UART_MODE_TX_RX;                                        //êÕ·¢Ä£ê½
        HAL_UART_Init(&UART5_Handler);                                                                    //ê1Äü

        __HAL_UART_ENABLE_IT(&UART5_Handler,UART_IT_RXNE);//¿aÆô½óêÕÖD¶Ï
        HAL_NVIC_EnableIRQ(UART5_IRQn);                                //ê1ÄüUART5ÖD¶Ïí¨μà
        HAL_NVIC_SetPriority(UART5_IRQn,1,0);        //ÇàÕ¼óÅÏ輶1£¬×óóÅÏ輶0       
        TIM7_Init(100-1,9000-1);                //10msÖD¶Ï
        __HAL_TIM_DISABLE(&TIM7_Handler);//1رն¨ê±Æ÷7
        UART5_RX_STA=0;                //Çåáã
         
}

//′®¿ú·¢Ëí»o′æÇø        
__align(8) u8 UART5_TX_BUF[UART5_MAX_SEND_LEN]; //·¢Ëí»o3å,×î′óUSART2_MAX_SEND_LEN×Ö½ú
#ifdef UART5_RX_EN                                                                   //èç1ûê1Äüá˽óêÕ             
//′®¿ú½óêÕ»o′æÇø        
u8 UART5_RX_BUF[UART5_MAX_RECV_LEN];                                     //½óêÕ»o3å,×î′óUSART2_MAX_RECV_LEN¸ö×Ö½ú.
//í¨1yÅD¶Ï½óêÕá¬Dø2¸ö×Ö·ûÖ®¼äμÄê±¼ä2î2»′óóú100msà′¾ö¶¨êÇ2»êÇò»′Îá¬DøμÄêy¾Y.
//èç1û2¸ö×Ö·û½óêÕ¼ä¸ô3¬1y100ms,ÔòèÏÎa2»êÇ1′Îá¬Døêy¾Y.ò2¾íêÇ3¬1y100msûóD½óêÕμ½
//èÎoÎêy¾Y,Ôò±íê¾′Ë′νóêÕíê±Ï.
//½óêÕμ½μÄêy¾Y×′ì¬
//[15]:0,ûóD½óêÕμ½êy¾Y;1,½óêÕμ½áËò»Åúêy¾Y.
//[14:0]:½óêÕμ½μÄêy¾Y3¤¶è
u16 UART5_RX_STA=0;            
void UART5_IRQHandler(void)
{
        u8 Res;            
        if((__HAL_UART_GET_FLAG(&UART5_Handler,UART_FLAG_RXNE)!=RESET))//½óêÕμ½êy¾Y
        {         
                HAL_UART_Receive(&UART5_Handler,&Res,1,1000);
                if((UART5_RX_STA&0x8000)==0)//½óêÕíêμÄò»Åúêy¾Y,»1ûóD±»′|àí,Ôò2»Ôù½óêÕÆäËûêy¾Y
                {                
                        if(UART5_RX_STA<UART5_MAX_RECV_LEN)                //&#187;1&#191;éò&#212;&#189;óê&#213;êy&#190;Y
                        {
                                __HAL_TIM_SET_COUNTER(&TIM7_Handler,0);//&#188;&#198;êy&#198;÷&#199;&#229;&#191;&#213;                                         
                                if(UART5_RX_STA==0)               
                                        __HAL_TIM_ENABLE(&TIM7_Handler);  //ê1&#196;ü&#182;¨ê±&#198;÷7
                                UART5_RX_BUF[UART5_RX_STA++]=Res;                //&#188;&#199;&#194;&#188;&#189;óê&#213;μ&#189;μ&#196;&#214;μ         
                        }else
                        {
                                UART5_RX_STA|=1<<15;                                        //&#199;&#191;&#214;&#198;±ê&#188;&#199;&#189;óê&#213;íê3é
                        }
                }         
  }                                                                                 
}

//′&#174;&#191;ú2,printf oˉêy
//è·±£ò&#187;′&#206;·¢&#203;íêy&#190;Y2&#187;3&#172;1yUSART2_MAX_SEND_LEN×&#214;&#189;ú
void u5_printf(char* fmt,...)  
{  
        u16 i,j;
        va_list ap;
        va_start(ap,fmt);
        vsprintf((char*)UART5_TX_BUF,fmt,ap);
        va_end(ap);
        i=strlen((const char*)UART5_TX_BUF);//′&#203;′&#206;·¢&#203;íêy&#190;Yμ&#196;3¤&#182;è
        for(j=0;j<i;j++)//&#209;-&#187;··¢&#203;íêy&#190;Y
        {
                while((UART5->ISR&0X40)==0);//&#209;-&#187;··¢&#203;í,&#214;±μ&#189;·¢&#203;ííê±&#207;   
                UART5->TDR=UART5_TX_BUF[j];  
        }
}
#endif       

[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
kbq1950361006
1楼-- · 2019-07-20 10:03
 精彩回答 2  元偷偷看……
kbq1950361006
2楼-- · 2019-07-20 11:31
关键这个是hal库的,也是第一次用,要是标准库我还能找找原因,这个我找了半天也不通无头绪,所以请求坛友相助
kbq1950361006
3楼-- · 2019-07-20 13:19
本帖最后由 kbq1950361006 于 2018-3-9 11:30 编辑

这一段是as608指纹模块的代码,usart2的部分均已改为uart5,不知道这个hal库版本的修改串口还要改哪里文件,主函数的调用也改啦[mw_shl_code=c,true]#include <string.h>
[mw_shl_code=c,true]#include <string.h>
#include <stdio.h>
#include "delay.h"        
#include "usart2.h"
#include "as608.h"

u32 AS608Addr = 0XFFFFFFFF; //&#196;&#172;è&#207;
//3&#245;ê&#188;&#187;ˉPA6&#206;a&#207;&#194;à-ê&#228;è&#235;                    
//&#182;á&#195;t3&#246;&#184;Dó|×′ì&#172;(′¥&#195;t&#184;Dó|ê±ê&#228;3&#246;&#184;&#223;μ&#231;&#198;&#189;D&#197;o&#197;)
void PS_StaGPIO_Init(void)
{   
  GPIO_InitTypeDef  GPIO_InitStructure;
        __HAL_RCC_GPIOC_CLK_ENABLE();
  //3&#245;ê&#188;&#187;ˉ&#182;á×′ì&#172;òy&#189;&#197;GPIOA
  GPIO_InitStructure.Pin = GPIO_PIN_10;
  GPIO_InitStructure.Mode = GPIO_MODE_INPUT; //ê&#228;è&#235;&#196;£ê&#189;
        GPIO_InitStructure.Pull = GPIO_PULLDOWN;         //&#207;&#194;à-&#196;£ê&#189;
  GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;//&#184;&#223;&#203;ù&#196;£ê&#189;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStructure); //3&#245;ê&#188;&#187;ˉGPIO       
}
//′&#174;&#191;ú·¢&#203;íò&#187;&#184;&#246;×&#214;&#189;ú
static void MYUSART_SendData(u8 data)
{
        while((UART5->ISR&0X40)==0);
        UART5->TDR = data;
}
//·¢&#203;í°üí·
static void SendHead(void)
{
        MYUSART_SendData(0xEF);
        MYUSART_SendData(0x01);
}
//·¢&#203;íμ&#216;&#214;·
static void SendAddr(void)
{
        MYUSART_SendData(AS608Addr>>24);
        MYUSART_SendData(AS608Addr>>16);
        MYUSART_SendData(AS608Addr>>8);
        MYUSART_SendData(AS608Addr);
}
//·¢&#203;í°ü±êê&#182;,
static void SendFlag(u8 flag)
{
        MYUSART_SendData(flag);
}
//·¢&#203;í°ü3¤&#182;è
static void SendLength(int length)
{
        MYUSART_SendData(length>>8);
        MYUSART_SendData(length);
}
//·¢&#203;í&#214;&#184;á&#238;&#194;&#235;
static void Sendcmd(u8 cmd)
{
        MYUSART_SendData(cmd);
}
//·¢&#203;íD£&#209;éoí
static void SendCheck(u16 check)
{
        MYUSART_SendData(check>>8);
        MYUSART_SendData(check);
}
//&#197;D&#182;&#207;&#214;D&#182;&#207;&#189;óê&#213;μ&#196;êy×éóD&#195;&#187;óDó|′e°ü
//waittime&#206;aμè′y&#214;D&#182;&#207;&#189;óê&#213;êy&#190;Yμ&#196;ê±&#188;&#228;£¨μ¥&#206;&#187;1ms£&#169;
//·μ&#187;&#216;&#214;μ£oêy&#190;Y°üê×μ&#216;&#214;·
static u8 *JudgeStr(u16 waittime)
{
        char *data;
        u8 str[8];
        str[0]=0xef;                                        str[1]=0x01;
        str[2]=AS608Addr>>24;        str[3]=AS608Addr>>16;               
        str[4]=AS608Addr>>8;        str[5]=AS608Addr;                               
        str[6]=0x07;                                        str[7]='';
        while(--waittime)
        {
                delay_ms(1);
                if(UART5_RX_STA&0X8000)//&#189;óê&#213;μ&#189;ò&#187;′&#206;êy&#190;Y
                {
                        UART5_RX_STA=0;
                        data=strstr((const char*)UART5_RX_BUF,(const char*)str);
                        if(data)
                                return (u8*)data;       
                }
        }
        return 0;
}
//&#194;&#188;è&#235;í&#188;&#207;&#241; PS_GetImage
//1|&#196;ü:ì&#189;2aê&#214;&#214;&#184;£&#172;ì&#189;2aμ&#189;oó&#194;&#188;è&#235;&#214;&#184;&#206;&#198;í&#188;&#207;&#241;′&#230;óúImageBuffer&#161;£
//&#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_GetImage(void)
{
  u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x01);
  temp =  0x01+0x03+0x01;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//éú3éì&#216;&#213;÷ PS_GenChar
//1|&#196;ü:&#189;&#171;ImageBuffer&#214;Dμ&#196;&#212;-ê&#188;í&#188;&#207;&#241;éú3é&#214;&#184;&#206;&#198;ì&#216;&#213;÷&#206;&#196;&#188;t′&#230;óúCharBuffer1&#187;òCharBuffer2                         
//2&#206;êy:BufferID --> charBuffer1:0x01        charBuffer1:0x02                                                                                               
//&#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_GenChar(u8 BufferID)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x04);
        Sendcmd(0x02);
        MYUSART_SendData(BufferID);
        temp = 0x01+0x04+0x02+BufferID;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//&#190;&#171;è·±è&#182;&#212;á&#189;&#195;&#182;&#214;&#184;&#206;&#198;ì&#216;&#213;÷ PS_Match
//1|&#196;ü:&#190;&#171;è·±è&#182;&#212;CharBuffer1 ó&#235;CharBuffer2 &#214;Dμ&#196;ì&#216;&#213;÷&#206;&#196;&#188;t
//&#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_Match(void)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x03);
        temp = 0x01+0x03+0x03;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//&#203;&#209;&#203;÷&#214;&#184;&#206;&#198; PS_Search
//1|&#196;ü:ò&#212;CharBuffer1&#187;òCharBuffer2&#214;Dμ&#196;ì&#216;&#213;÷&#206;&#196;&#188;t&#203;&#209;&#203;÷&#213;&#251;&#184;&#246;&#187;ò2&#191;·&#214;&#214;&#184;&#206;&#198;&#191;a.è&#244;&#203;&#209;&#203;÷μ&#189;£&#172;&#212;ò·μ&#187;&#216;ò3&#194;&#235;&#161;£                       
//2&#206;êy:  BufferID @ref CharBuffer1        CharBuffer2
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;£&#172;ò3&#194;&#235;£¨&#207;à&#197;&#228;&#214;&#184;&#206;&#198;&#196;£°&#229;£&#169;
u8 PS_Search(u8 BufferID,u16 StartPage,u16 PageNum,SearchResult *p)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x08);
        Sendcmd(0x04);
        MYUSART_SendData(BufferID);
        MYUSART_SendData(StartPage>>8);
        MYUSART_SendData(StartPage);
        MYUSART_SendData(PageNum>>8);
        MYUSART_SendData(PageNum);
        temp = 0x01+0x08+0x04+BufferID
        +(StartPage>>8)+(u8)StartPage
        +(PageNum>>8)+(u8)PageNum;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
        {
                ensure = data[9];
                p->pageID   =(data[10]<<8)+data[11];
                p->mathscore=(data[12]<<8)+data[13];       
        }
        else
                ensure = 0xff;
        return ensure;       
}
//o&#207;2¢ì&#216;&#213;÷£¨éú3é&#196;£°&#229;£&#169S_RegModel
//1|&#196;ü:&#189;&#171;CharBuffer1ó&#235;CharBuffer2&#214;Dμ&#196;ì&#216;&#213;÷&#206;&#196;&#188;to&#207;2¢éú3é &#196;£°&#229;,&#189;á1&#251;′&#230;óúCharBuffer1ó&#235;CharBuffer2       
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_RegModel(void)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x05);
        temp = 0x01+0x03+0x05;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;               
}
//′¢′&#230;&#196;£°&#229; PS_StoreChar
//1|&#196;ü:&#189;&#171; CharBuffer1 &#187;ò CharBuffer2 &#214;Dμ&#196;&#196;£°&#229;&#206;&#196;&#188;t′&#230;μ&#189; PageID o&#197;flashêy&#190;Y&#191;a&#206;&#187;&#214;&#195;&#161;£                       
//2&#206;êy:  BufferID @ref charBuffer1:0x01        charBuffer1:0x02
//       PageID£¨&#214;&#184;&#206;&#198;&#191;a&#206;&#187;&#214;&#195;o&#197;£&#169;
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_StoreChar(u8 BufferID,u16 PageID)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x06);
        Sendcmd(0x06);
        MYUSART_SendData(BufferID);
        MYUSART_SendData(PageID>>8);
        MYUSART_SendData(PageID);
        temp = 0x01+0x06+0x06+BufferID
        +(PageID>>8)+(u8)PageID;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;       
}
//é&#190;3y&#196;£°&#229; PS_DeletChar
//1|&#196;ü:  é&#190;3yflashêy&#190;Y&#191;a&#214;D&#214;&#184;&#182;¨IDo&#197;&#191;aê&#188;μ&#196;N&#184;&#246;&#214;&#184;&#206;&#198;&#196;£°&#229;
//2&#206;êy:  PageID(&#214;&#184;&#206;&#198;&#191;a&#196;£°&#229;o&#197;)£&#172;Né&#190;3yμ&#196;&#196;£°&#229;&#184;&#246;êy&#161;£
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_DeletChar(u16 PageID,u16 N)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x07);
        Sendcmd(0x0C);
        MYUSART_SendData(PageID>>8);
        MYUSART_SendData(PageID);
        MYUSART_SendData(N>>8);
        MYUSART_SendData(N);
        temp = 0x01+0x07+0x0C
        +(PageID>>8)+(u8)PageID
        +(N>>8)+(u8)N;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//&#199;&#229;&#191;&#213;&#214;&#184;&#206;&#198;&#191;a PS_Empty
//1|&#196;ü:  é&#190;3yflashêy&#190;Y&#191;a&#214;D&#203;ùóD&#214;&#184;&#206;&#198;&#196;£°&#229;
//2&#206;êy:  &#206;T
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_Empty(void)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x0D);
        temp = 0x01+0x03+0x0D;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//D′&#207;μí3&#188;&#196;′&#230;&#198;÷ PS_WriteReg
//1|&#196;ü:  D′&#196;£&#191;é&#188;&#196;′&#230;&#198;÷
//2&#206;êy:  &#188;&#196;′&#230;&#198;÷Dòo&#197;RegNum:456
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_WriteReg(u8 RegNum,u8 DATA)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x05);
        Sendcmd(0x0E);
        MYUSART_SendData(RegNum);
        MYUSART_SendData(DATA);
        temp = RegNum+DATA+0x01+0x05+0x0E;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        if(ensure==0)
                printf(" éè&#214;&#195;2&#206;êy3é1|£&#161;");
        else
                printf(" %s",EnsureMessage(ensure));
        return ensure;
}
//&#182;á&#207;μí3&#187;ù±&#190;2&#206;êy PS_ReadSysPara
//1|&#196;ü:  &#182;áè&#161;&#196;£&#191;éμ&#196;&#187;ù±&#190;2&#206;êy£¨2¨ì&#216;&#194;ê£&#172;°ü′óD&#161;μè)
//2&#206;êy:  &#206;T
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214; + &#187;ù±&#190;2&#206;êy£¨16bytes£&#169;
u8 PS_ReadSysPara(SysPara *p)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x0F);
        temp = 0x01+0x03+0x0F;
        SendCheck(temp);
        data=JudgeStr(1000);
        if(data)
        {
                ensure = data[9];
                p->S_max = (data[14]<<8)+data[15];
                p->S_level = data[17];
                p->S_addr=(data[18]<<24)+(data[19]<<16)+(data[20]<<8)+data[21];
                p->S_size = data[23];
                p->S_N = data[25];
        }               
        else
                ensure=0xff;
        if(ensure==0x00)
        {
                printf(" &#196;£&#191;é×&#238;′ó&#214;&#184;&#206;&#198;èYá&#191;=%d",p->S_max);
                printf(" &#182;&#212;±èμè&#188;&#182;=%d",p->S_level);
                printf(" μ&#216;&#214;·=%x",p->S_addr);
                printf(" 2¨ì&#216;&#194;ê=%d",p->S_N*9600);
        }
        else
                        printf(" %s",EnsureMessage(ensure));
        return ensure;
}
//éè&#214;&#195;&#196;£&#191;éμ&#216;&#214;· PS_SetAddr
//1|&#196;ü:  éè&#214;&#195;&#196;£&#191;éμ&#216;&#214;·
//2&#206;êy:  PS_addr
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_SetAddr(u32 PS_addr)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x07);
        Sendcmd(0x15);
        MYUSART_SendData(PS_addr>>24);
        MYUSART_SendData(PS_addr>>16);
        MYUSART_SendData(PS_addr>>8);
        MYUSART_SendData(PS_addr);
        temp = 0x01+0x07+0x15
        +(u8)(PS_addr>>24)+(u8)(PS_addr>>16)
        +(u8)(PS_addr>>8) +(u8)PS_addr;                               
        SendCheck(temp);
        AS608Addr=PS_addr;//·¢&#203;ííê&#214;&#184;á&#238;£&#172;&#184;ü&#187;&#187;μ&#216;&#214;·
  data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;       
                AS608Addr = PS_addr;
        if(ensure==0x00)
                printf(" éè&#214;&#195;μ&#216;&#214;·3é1|£&#161;");
        else
                printf(" %s",EnsureMessage(ensure));
        return ensure;
}
//1|&#196;ü£o &#196;£&#191;é&#196;ú2&#191;&#206;aó&#195;&#187;§&#191;a±ùá&#203;256bytesμ&#196;FLASH&#191;&#213;&#188;&#228;ó&#195;óú′&#230;ó&#195;&#187;§&#188;&#199;ê&#194;±&#190;,
//        &#184;&#195;&#188;&#199;ê&#194;±&#190;&#194;&#223;&#188;-é&#207;±&#187;·&#214;3é 16 &#184;&#246;ò3&#161;£
//2&#206;êy:  NotePageNum(0~15),Byte32(òaD′è&#235;&#196;úèY£&#172;32&#184;&#246;×&#214;&#189;ú)
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;
u8 PS_WriteNotepad(u8 NotePageNum,u8 *Byte32)
{
        u16 temp;
  u8  ensure,i;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(36);
        Sendcmd(0x18);
        MYUSART_SendData(NotePageNum);
        for(i=0;i<32;i++)
         {
                 MYUSART_SendData(Byte32);
                 temp += Byte32;
         }
  temp =0x01+36+0x18+NotePageNum+temp;
        SendCheck(temp);
  data=JudgeStr(2000);
        if(data)
                ensure=data[9];
        else
                ensure=0xff;
        return ensure;
}
//&#182;á&#188;&#199;ê&#194;PS_ReadNotepad
//1|&#196;ü£o  &#182;áè&#161;FLASHó&#195;&#187;§&#199;&#248;μ&#196;128bytesêy&#190;Y
//2&#206;êy:  NotePageNum(0~15)
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;+ó&#195;&#187;§D&#197;&#207;¢
u8 PS_ReadNotepad(u8 NotePageNum,u8 *Byte32)
{
        u16 temp;
  u8  ensure,i;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x04);
        Sendcmd(0x19);
        MYUSART_SendData(NotePageNum);
        temp = 0x01+0x04+0x19+NotePageNum;
        SendCheck(temp);
  data=JudgeStr(2000);
        if(data)
        {
                ensure=data[9];
                for(i=0;i<32;i++)
                {
                        Byte32=data[10+i];
                }
        }
        else
                ensure=0xff;
        return ensure;
}
//&#184;&#223;&#203;ù&#203;&#209;&#203;÷PS_HighSpeedSearch
//1|&#196;ü£oò&#212; CharBuffer1&#187;òCharBuffer2&#214;Dμ&#196;ì&#216;&#213;÷&#206;&#196;&#188;t&#184;&#223;&#203;ù&#203;&#209;&#203;÷&#213;&#251;&#184;&#246;&#187;ò2&#191;·&#214;&#214;&#184;&#206;&#198;&#191;a&#161;£
//                  è&#244;&#203;&#209;&#203;÷μ&#189;£&#172;&#212;ò·μ&#187;&#216;ò3&#194;&#235;,&#184;&#195;&#214;&#184;á&#238;&#182;&#212;óúμ&#196;è·′&#230;&#212;úóú&#214;&#184;&#206;&#198;&#191;a&#214;D £&#172;&#199;òμ&#199;&#194;&#188;ê±&#214;êá&#191;
//                  oüo&#195;μ&#196;&#214;&#184;&#206;&#198;£&#172;&#187;áoü&#191;ì&#184;&#248;3&#246;&#203;&#209;&#203;÷&#189;á1&#251;&#161;£
//2&#206;êy:  BufferID£&#172; StartPage(&#198;eê&#188;ò3)£&#172;PageNum£¨ò3êy£&#169;
//&#203;μ&#195;÷:  &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;+ò3&#194;&#235;£¨&#207;à&#197;&#228;&#214;&#184;&#206;&#198;&#196;£°&#229;£&#169;
u8 PS_HighSpeedSearch(u8 BufferID,u16 StartPage,u16 PageNum,SearchResult *p)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x08);
        Sendcmd(0x1b);
        MYUSART_SendData(BufferID);
        MYUSART_SendData(StartPage>>8);
        MYUSART_SendData(StartPage);
        MYUSART_SendData(PageNum>>8);
        MYUSART_SendData(PageNum);
        temp = 0x01+0x08+0x1b+BufferID
        +(StartPage>>8)+(u8)StartPage
        +(PageNum>>8)+(u8)PageNum;
        SendCheck(temp);
        data=JudgeStr(2000);
        if(data)
        {
                ensure=data[9];
                p->pageID         =(data[10]<<8) +data[11];
                p->mathscore=(data[12]<<8) +data[13];
        }
        else
                ensure=0xff;
        return ensure;
}
//&#182;áóDD§&#196;£°&#229;&#184;&#246;êy PS_ValidTempleteNum
//1|&#196;ü£o&#182;áóDD§&#196;£°&#229;&#184;&#246;êy
//2&#206;êy: &#206;T
//&#203;μ&#195;÷: &#196;£&#191;é·μ&#187;&#216;è·è&#207;×&#214;+óDD§&#196;£°&#229;&#184;&#246;êyValidN
u8 PS_ValidTempleteNum(u16 *ValidN)
{
        u16 temp;
  u8  ensure;
        u8  *data;
        SendHead();
        SendAddr();
        SendFlag(0x01);//&#195;üá&#238;°ü±êê&#182;
        SendLength(0x03);
        Sendcmd(0x1d);
        temp = 0x01+0x03+0x1d;
        SendCheck(temp);
  data=JudgeStr(2000);
        if(data)
        {
                ensure=data[9];
                *ValidN = (data[10]<<8) +data[11];
        }               
        else
                ensure=0xff;
       
        if(ensure==0x00)
        {
                printf(" óDD§&#214;&#184;&#206;&#198;&#184;&#246;êy=%d",(data[10]<<8)+data[11]);
        }
        else
                printf(" %s",EnsureMessage(ensure));
        return ensure;
}
//ó&#235;AS608&#206;&#213;ê&#214; PS_HandShake
//2&#206;êy: PS_Addrμ&#216;&#214;·&#214;&#184;&#213;&#235;
//&#203;μ&#195;÷: &#196;£&#191;é·μD&#194;μ&#216;&#214;·£¨&#213;yè·μ&#216;&#214;·£&#169;       
u8 PS_HandShake(u32 *PS_Addr)
{
        SendHead();
        SendAddr();
        MYUSART_SendData(0X01);
        MYUSART_SendData(0X00);
        MYUSART_SendData(0X00);       
        delay_ms(200);
        if(UART5_RX_STA&0X8000)//&#189;óê&#213;μ&#189;êy&#190;Y
        {               
                if(//&#197;D&#182;&#207;ê&#199;2&#187;ê&#199;&#196;£&#191;é·μ&#187;&#216;μ&#196;ó|′e°ü                               
                                        UART5_RX_BUF[0]==0XEF
                                &&UART5_RX_BUF[1]==0X01
                                &&UART5_RX_BUF[6]==0X07
                        )
                        {
                                *PS_Addr=(UART5_RX_BUF[2]<<24) + (UART5_RX_BUF[3]<<16)
                                                                +(UART5_RX_BUF[4]<<8) + (UART5_RX_BUF[5]);
                                UART5_RX_STA=0;
                                return 0;
                        }
                UART5_RX_STA=0;                                       
        }
        return 1;               
}
//&#196;£&#191;éó|′e°üè·è&#207;&#194;&#235;D&#197;&#207;¢&#189;a&#206;&#246;
//1|&#196;ü£o&#189;a&#206;&#246;è·è&#207;&#194;&#235;′í&#206;óD&#197;&#207;¢·μ&#187;&#216;D&#197;&#207;¢
//2&#206;êy: ensure
const char *EnsureMessage(u8 ensure)
{
        const char *p;
        switch(ensure)
        {
                case  0x00:
                        p="OK";break;               
                case  0x01:
                        p="êy&#190;Y°ü&#189;óê&#213;′í&#206;ó";break;
                case  0x02:
                        p="′&#171;&#184;D&#198;÷é&#207;&#195;&#187;óDê&#214;&#214;&#184;";break;
                case  0x03:
                        p="&#194;&#188;è&#235;&#214;&#184;&#206;&#198;í&#188;&#207;&#241;꧰ü";break;
                case  0x04:
                        p="&#214;&#184;&#206;&#198;í&#188;&#207;&#241;ì&#171;&#184;é&#161;¢ì&#171;μ-&#182;&#248;éú2&#187;3éì&#216;&#213;÷";break;
                case  0x05:
                        p="&#214;&#184;&#206;&#198;í&#188;&#207;&#241;ì&#171;êa&#161;¢ì&#171;oy&#182;&#248;éú2&#187;3éì&#216;&#213;÷";break;
                case  0x06:
                        p="&#214;&#184;&#206;&#198;í&#188;&#207;&#241;ì&#171;&#194;ò&#182;&#248;éú2&#187;3éì&#216;&#213;÷";break;
                case  0x07:
                        p="&#214;&#184;&#206;&#198;í&#188;&#207;&#241;&#213;y3££&#172;μ&#171;ì&#216;&#213;÷μ&#227;ì&#171;éù£¨&#187;ò&#195;&#230;&#187;yì&#171;D&#161;£&#169;&#182;&#248;éú2&#187;3éì&#216;&#213;÷";break;
                case  0x08:
                        p="&#214;&#184;&#206;&#198;2&#187;&#198;¥&#197;&#228;";break;
                case  0x09:
                        p="&#195;&#187;&#203;&#209;&#203;÷μ&#189;&#214;&#184;&#206;&#198;";break;
                case  0x0a:
                        p="ì&#216;&#213;÷o&#207;2¢꧰ü";break;
                case  0x0b:
                        p="·&#195;&#206;ê&#214;&#184;&#206;&#198;&#191;aê±μ&#216;&#214;·Dòo&#197;3&#172;3&#246;&#214;&#184;&#206;&#198;&#191;a·&#182;&#206;§";
                case  0x10:
                        p="é&#190;3y&#196;£°&#229;꧰ü";break;
                case  0x11:
                        p="&#199;&#229;&#191;&#213;&#214;&#184;&#206;&#198;&#191;a꧰ü";break;       
                case  0x15:
                        p="&#187;o3&#229;&#199;&#248;&#196;ú&#195;&#187;óDóDD§&#212;-ê&#188;í&#188;&#182;&#248;éú2&#187;3éí&#188;&#207;&#241;";break;
                case  0x18:
                        p="&#182;áD′ FLASH 3&#246;′í";break;
                case  0x19:
                        p="&#206;′&#182;¨ò&#229;′í&#206;ó";break;
                case  0x1a:
                        p="&#206;TD§&#188;&#196;′&#230;&#198;÷o&#197;";break;
                case  0x1b:
                        p="&#188;&#196;′&#230;&#198;÷éè&#182;¨&#196;úèY′í&#206;ó";break;
                case  0x1c:
                        p="&#188;&#199;ê&#194;±&#190;ò3&#194;&#235;&#214;&#184;&#182;¨′í&#206;ó";break;
                case  0x1f:
                        p="&#214;&#184;&#206;&#198;&#191;a&#194;ú";break;
                case  0x20:
                        p="μ&#216;&#214;·′í&#206;ó";break;
                default :
                        p="&#196;£&#191;é·μ&#187;&#216;è·è&#207;&#194;&#235;óD&#206;ó";break;
        }
return p;       
}[/mw_shl_code]
kbq1950361006
4楼-- · 2019-07-20 15:31
 精彩回答 2  元偷偷看……
kbq1950361006
5楼-- · 2019-07-20 15:59
现在问题变成了串口收发不通,都不是数据不对了,根本没有数据
kbq1950361006
6楼-- · 2019-07-20 19:24
 精彩回答 2  元偷偷看……

一周热门 更多>