75 lines
3.1 KiB
C
75 lines
3.1 KiB
C
/*----------------------------------------------------------------------------------------------------
|
|
# THIS FILE IS A PART OF XerolySkinner's PROJECT
|
|
#
|
|
# THIS PROGRAM IS FREE SOFTWARE
|
|
#
|
|
# E-mail:ZABBCCCBBAZ@163.com
|
|
# QQ:2715099320
|
|
#
|
|
# Copyright (c) 2022 XerolySkinner
|
|
# All rights reserved.
|
|
*/
|
|
|
|
/*----------------------------------------------------------------------------------------------------
|
|
名字:bsp_Console
|
|
时间:20220805-0424
|
|
程序员:梁源康
|
|
说明:搭建上位机处理
|
|
*/
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 头文件
|
|
#include "vartable.h"
|
|
#include "string.h"
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 变量和定义
|
|
//
|
|
#define console_num(num) (*((num*)(console_buff+1)))
|
|
#define CONSOLE_BUFF_LEN 32
|
|
uint8_t console_buff[CONSOLE_BUFF_LEN]={0};
|
|
struct console_pack consolePack={0,0,0};
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 程序
|
|
//
|
|
void bsp_ConsoleInit(UART_HandleTypeDef *huart){
|
|
// 开启空闲中断
|
|
__HAL_UART_ENABLE_IT(huart,UART_IT_IDLE);
|
|
// 接收相关内容
|
|
HAL_UART_Receive_DMA(huart,console_buff,CONSOLE_BUFF_LEN);}
|
|
//----------------------------------------------------------------------------------------------------
|
|
void bsp_ConsoleJump(UART_HandleTypeDef *huart){
|
|
// 空闲中断跳转
|
|
if(__HAL_UART_GET_FLAG(huart,UART_FLAG_IDLE)!=RESET){
|
|
__HAL_UART_CLEAR_IDLEFLAG(huart);
|
|
HAL_UART_IdleCpltCallback(huart);}}
|
|
//----------------------------------------------------------------------------------------------------
|
|
void HAL_UART_IdleCpltCallback(UART_HandleTypeDef *huart){
|
|
HAL_UART_DMAStop(huart);
|
|
if(huart==&huart1){
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 按钮识别区
|
|
if(console_buff[0]==0){
|
|
switch(console_buff[1]){
|
|
case 0:
|
|
printf("按钮0");break;
|
|
case 1:
|
|
printf("按钮1");break;
|
|
default:
|
|
printf("按钮未知\r\n");break;}}
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 包识别区-默认小端接收方式
|
|
if(console_buff[0]==1){
|
|
memcpy(&consolePack,console_buff+1,sizeof(struct console_pack));}
|
|
//----------------------------------------------------------------------------------------------------
|
|
// 数值识别区
|
|
if(console_buff[0]==2)printf("2号:%d\r\n",console_num(int));
|
|
//----------------------------------------------------------------------------------------------------
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
}
|
|
HAL_UART_Receive_DMA(huart,console_buff,CONSOLE_BUFF_LEN);}
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|