找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1951|回復: 3
打印 上一主題 下一主題
收起左側(cè)

這個C語言程序send_buf[]函數(shù)怎么定義?

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:320487 發(fā)表于 2021-12-25 11:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

定義語法是什么 ,在哪個文件夾里定義好?
謝謝啊
#include "config.h"
#define FOSC 22118400L      //System frequency
uint32_t baud=9600;           //UART baudrate
/************************************************************************
函 數(shù) 名: 串口初始化
功能描述: STC10L08XE 單片機串口初始化函數(shù)
返回函數(shù): none
其他說明: none
**************************************************************************/
void UartIni(void)
{
    SCON = 0x50;            //8-bit variable UART
    TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode
    TH1 = TL1 = -(FOSC/12/32/baud); //Set auto-reload vaule
    TR1 = 1;                //Timer1 start run
    ES = 1;                 //Enable UART interrupt
    EA = 1;                 //Open master interrupt switch
}
/***********************************************************
* 名    稱:
* 功    能:
* 入口參數(shù): 無
* 出口參數(shù):無
* 說    明:                                          
**********************************************************/
void Uart_Isr() interrupt 4 using 1
{        
        if(RI)
        {        
                  
        }

}
/************************************************************************
功能描述:         串口發(fā)送一字節(jié)數(shù)據(jù)
入口參數(shù):        DAT:帶發(fā)送的數(shù)據(jù)
返 回 值:         none
其他說明:        none
**************************************************************************/
void UARTSendByte(uint8_t DAT)
{
        ES  =  0;
        TI=0;
        SBUF = DAT;
        while(TI==0);
        TI=0;
        ES = 1;
}
/************************************************************************
功能描述: 串口發(fā)送字符串數(shù)據(jù)
入口參數(shù):         *DAT:字符串指針
返 回 值: none
其他說明: API 供外部使用,直觀!
**************************************************************************/
void PrintCom(uint8_t *DAT)
{
        while(*DAT)
        {
                 UARTSendByte(*DAT++);
        }        
}


         /******************************************************************************
- 功能描述:  串口向外發(fā)送命令[包括控制和查詢]
- 參數(shù)說明:CMD:表示控制指令,請查閱指令表,還包括查詢的相關指令
feedback:是否需要應答[0:不需要應答,1:需要應答]
data:傳送的參數(shù)
******************************************************************************/
void SendCmd(uint8_t len)
{
uint8_t i = 0 ;
UARTSendByte(0x7E); //起始
for(i=0; i<len; i++)//數(shù)據(jù)
{
UARTSendByte(Send_buf[ i][ i]) ;
}
UARTSendByte(0xEF) ;//結(jié)束
}
/******************************************************************************
- 功能描述:求和校驗
- 和校驗的思路如下:
發(fā)送的指令,去掉起始和結(jié)束。將中間的6個字節(jié)進行累加,最后取反碼。接收端就將
接收到的一幀數(shù)據(jù),去掉起始和結(jié)束。將中間的數(shù)據(jù)累加,再加上接收到的校驗字節(jié)。剛好
為0.這樣就代表接收到的數(shù)據(jù)完全正確。
******************************************************************************/
void DoSum( uint8_t *Str, uint8_t len)
{
uint16_t xorsum = 0;
uint8_t i;
for(i=0; i<len; i++)
{
xorsum = xorsum + Str[ i];
}
xorsum = 0 -xorsum;
*(Str+i) = (uint8_t)(xorsum >>8);
*(Str+i+1) = (uint8_t)(xorsum & 0x00ff);
}
void Uart_SendCMD(uint8_t CMD ,uint8_t feedback , uint16_t dat)
{
Send_buf[0] = 0xff;                           //保留字節(jié)
Send_buf[1] = 0x06;                          //長度
Send_buf[2] = CMD;                           //控制指令
Send_buf[3] = feedback;                      //是否需要反饋
Send_buf[4] = (uint8_t)(dat >> 8);             //datah
Send_buf[5] = (uint8_t)(dat);                 //datal
DoSum(&Send_buf[0],6);                        //校驗
SendCmd(8);                                   //發(fā)送此幀數(shù)據(jù)
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:301191 發(fā)表于 2021-12-25 17:50 | 只看該作者
頂一下
回復

使用道具 舉報

板凳
ID:320487 發(fā)表于 2021-12-26 12:02 | 只看該作者
已解決
回復

使用道具 舉報

地板
ID:290373 發(fā)表于 2021-12-26 20:54 | 只看該作者
你這個send_buf是變量而不是函數(shù)。
簡單點的,在Uart_SendCMD函數(shù)開頭直接聲明一個uint8_t Send_buf[6]

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表