初级会员

- 积分
- 65
- 金钱
- 65
- 注册时间
- 2020-5-6
- 在线时间
- 43 小时
|

楼主 |
发表于 2021-1-6 10:12:43
|
显示全部楼层
按键发送
void send_print(u8 function_name,u8 function_extension)
{
unsigned int data_count=2;
unsigned char send_buf[ send.function_offset+data_count+1];
u8 crc8;
u8 index=0;
memcpy(&send_buf,FRAME_HEAD,strlen(FRAME_HEAD)); //Õíèåí·
index+=send.headArraysLen;
//»o3åÇø
send_buf[index++]=send.project_name;
send_buf[index++]= data_count&0xff;
send_buf[index++]= (data_count >>8)&0xff;
// send_buf[index++]= 7;
// send_buf[index++]= 8;
send_buf[index++] = function_name;
send_buf[index++] = function_extension;
//char *dd=new char[122];
crc8 = cal_crc_table(send_buf,((sizeof send_buf)/(sizeof send_buf[0]))-1);
send_buf[index++] = crc8;
USART2Write ((u8*)send_buf,((sizeof send_buf)/(sizeof send_buf[0])));
//UART2_SendOneData(USART2,*send_buf);
//printf("%s",send_buf);
}
按键发送调用
u8 KEY15_Scan(void)
{
int key15 ;
int key_button15 ;
key15 = KeyPin;
delay_ms(80);
key_button15 = KeyPin;
if(key15==key_button15&&key15==0)
{
send_print(ALARM_FUNCTION,0);
}
}
发送函数
void USART2Write(u8 * data, u16 len)
{
u16 i;
for (i=0; i<len; i++)
{
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
USART_SendData(USART2,data[i]);
}
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
}
void UART2_SendOneData(uint16_t SendOneData)
{
USART_SendData(USART2, SendOneData);
while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
{}
}
一个是发送多字节,一个是发送单字节。单字节主要用于接受数据后解析成功与否。
@正点原子 麻烦了老哥 |
|