久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32F103和HMI串口屏通信,參考了論壇上大佬的單片機代碼,但是依舊有問題 [打印本頁]

作者: SereinM    時間: 2022-7-23 11:08
標題: STM32F103和HMI串口屏通信,參考了論壇上大佬的單片機代碼,但是依舊有問題
代碼寫的很清晰,但是不知道為什么單片機和串口屏接上去之后,沒有進行賦值,LED0依然是閃爍,說明也是正常工作
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"         

#include "hmi.h"

u8 dat[] = "add 1,0,9 0xff,0xff,0xff";
int t=0;
u8 date[] = {0xff,0xff,0xff};

int main(void)
{         
        delay_init();                     //延時函數初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
        uart_init(9600);                 //串口初始化為115200         
        uart3_init(115200);
         LED_Init();                             //LED端口初始化
         
        while(1)
        {
                for(t=0;t<56;t++)
        {        
            while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
            USART_SendData(USART3,dat[t]);                                         
        }
                //                HMI_SendNum(USART3,"n0.val=",0,2,4);
//          HMI_SendNum(USART3,"n1.val=",7,(int)2,1);
//          HMI_SendNum(USART3,"n2.val=",7,((int)2)/100,1);
//          HMI_SendNum(USART3,"n3.val=",7,(((int)2)/10)%10,1);
//          HMI_SendNum(USART3,"n4.val=",7,((int)2)%10,1);
               
          HMI_SendText(USART1,"t0.txt=",7,"文本測試",8);        
                                       
                LED0=!LED0;
                delay_ms(250);        
        }
}


作者: Y_G_G    時間: 2022-7-23 11:41
代碼寫的很清晰,這是什么意思?
LED0=!LED0;這個本身就是在循環中的,又沒有什么條件的,它肯定一直是閃燈的呀
那么,你這問題是什么呢?
就這幾行代碼,你也沒有說明你的程序有什么問題呀
而且,串口屏的程序呢?
作者: sadadasddas2    時間: 2022-7-23 13:20
HMI_SendText(USART1,"t0.txt=",7,"文本測試",8);      
                                       
                LED0=!LED0;
                delay_ms(250);      
改成
HMI_SendText(USART1,"t0.txt=",7,"文本測試",8)      
             {                          
                LED0=!LED0;
                delay_ms(250);   
              }
發送數據的時候進行閃爍 是要這樣嗎?
作者: SereinM    時間: 2022-7-23 13:57
Y_G_G 發表于 2022-7-23 11:41
代碼寫的很清晰,這是什么意思?
LED0=!LED0;這個本身就是在循環中的,又沒有什么條件的,它肯定一直是閃燈的 ...

這是串口屏的代碼,
#include "sys.h"
#include "hmi.h"       
/************************************************************************
           說明:本函數庫為陶晶池串口屏數據發送指令庫,包含以下函數
                                         
1.數值發送函數:void HMI_SendNum(USART_TypeDef* USARTx,u8 *data,u8 len,u16 Num,u8 len2)
            USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
            u16 *data:上位機上數字位相應的改變數值代碼,如"n0.val="、"n1.val="
                                                u8 len:*data代碼的長度。如"n0.val="長度為7。
            u16 Num:需要串口輸出顯示的數值,注意開頭0不顯示,輸出數字0開頭會報錯
            u8 len2:需要顯示的數值的位數    注意不能大于上位機上設定的位數

2.字符串發送函數:void HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
            USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
            u16 *data:上位機上文本位相應的改變數值代碼,如"t0.txt="、"t1.txt="
                  u8 len:*data代碼的長度。如"t0.txt="長度為7。
            u8 *text:需要串口輸出顯示的文本
            u8 len2:需要顯示的文本的長度,英文一個字符一字節、漢字一個字兩個字節   
                                                         注意取的值可以比文本長度大,但不能大于上位機上設定的長度

*************************************************************************/



//10的乘方函數,用于判斷位數
u32 HMI_Pow(u8 n)
{
        u32 result=1;         
        while(n--)result*=10;   
        return result;
}       


//數值發送函數
//USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能串口
//u16 *data:上位機上數字位相應的改變數值代碼
//u8 len:*data代碼的長度。
//u16 Num:需要顯示的數值,注意開頭0不顯示
//u8 len2:需要顯示的數值的位數
void HMI_SendNum(USART_TypeDef* USARTx,u8 *data,u8 len,u16 Num,u8 len2)
{
                u8 t;
for(t=0;t<len;t++)
        {       
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,data[t]);                                        
        }
for(t=0;t<len2;t++)       
{
           while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
           USART_SendData(USARTx,'0'+(Num/HMI_Pow(len2-t-1))%10);


}
                               
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);
              
              
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);
            
              
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);

}

//字符串發送函數:HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
//            USART_TypeDef* USARTx: 選擇串口輸出,注意必須先初始化、使能該串口
//            u16 *data:上位機上文本位相應的改變數值代碼,如"t0.txt="、"t1.txt="
//                  u8 len:*data代碼的長度。如"t0.txt="長度為7。
//            u8 *text:需要串口輸出顯示的文本
//            u8 len2:需要顯示的文本的長度,英文一個字符一字節、漢字一個字兩個字節   

void HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
{
                u8 t;
    for(t=0;t<len;t++)
        {       
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,data[t]);                                        
        }
                                    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0X22);
   for(t=0;t<len2;t++)       
       {
           while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
           USART_SendData(USARTx,text[t]);


       }
                                                 while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0X22);
                               
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);
              
              
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);
            
              
            while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
            USART_SendData(USARTx,0XFF);




}

作者: Y_G_G    時間: 2022-7-24 00:14
sadadasddas2 發表于 2022-7-23 13:20
HMI_SendText(USART1,"t0.txt=",7,"文本測試",8);      
                                       
    ...

你這就加了個{}而已,能不能編譯得過去還不知道呢
作者: Y_G_G    時間: 2022-7-24 08:29
SereinM 發表于 2022-7-23 13:57
這是串口屏的代碼,
#include "sys.h"
#include "hmi.h"       

你給這代碼什么意思?
你要做什么?
你說的不行是什么意思,到底哪里不行?
串口一定要先設置好,你可以先用電腦的串口助手接收一下STM32發送了什么
而且,控件的名稱一定要對應,也要先創建好字庫
作者: fxj    時間: 2022-11-21 13:50
雖然我解決不了問題,但是我覺得提問者搞得人家一頭霧水,要么你直接整個程序發上來讓人家幫看看,你這貼這么一點人家怎么知道你要干什么。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美在线成人影院 | 自拍偷拍3p | 欧美午夜精品久久久久免费视 | 色爽女 | 九一视频在线播放 | 亚洲精品二区 | 久久亚洲一区二区三区四区 | 四虎影院在线观看av | 国产亚洲精品久久久久久豆腐 | 亚洲精品国产偷自在线观看 | 99视频在线播放 | 五月婷婷激情 | 久久久999精品| 久久综合久久综合久久 | 日韩免费高清视频 | 中文字幕亚洲一区二区三区 | 亚洲高清在线 | 国产在线精品一区二区三区 | av一区在线观看 | 国产精品婷婷 | 日韩二区三区 | 欧美在线观看一区 | 免费观看成人鲁鲁鲁鲁鲁视频 | 婷婷丁香在线视频 | 日韩在线一区二区三区 | 久久网站免费视频 | 午夜视频在线视频 | 国产精品爱久久久久久久 | 成人一区二区三区 | 一级片免费视频 | 日产精品久久久一区二区福利 | 五月婷婷亚洲 | 欧美国产日韩一区 | 九九综合九九 | 91成人在线视频 | 精品亚洲一区二区 | 国产在线不卡 | 久久免费观看视频 | 亚洲一区视频在线 | 免费观看一级特黄欧美大片 | 久久亚洲一区 |