开发板:普中PZ6808L-F4
开发环境:keil5+CnbeMx
硬件资源:2个LED 1个串口
功能说明:LED2闪烁表示系统在运行 LED1通过串口控制
CnbeMx配置为
int fputc(int ch,FILE *f)//重新定义串口输出使用printf功能
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,2);
return(ch);
}
// 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
int fgetc(FILE * f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
return ch;
}
int main(void)
{
uint32_t i;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
printf("Hello World\r\n");
HAL_UART_Receive_IT(&huart1,&RXBUF[0],1);
while (1)
{
// ch=getchar();
if(strstr((const char*)RxBuff,"openled1"))
{
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
}
if(strstr((const char*)RxBuff,"closeled1"))
{
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
}
if(++i>1000000)
{
i=0;
HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
}
}
}
// 函数功能: 串口接收完成回调函数
uint8_t res;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
if(UartHandle==&huart1)
{
// HAL_UART_Transmit(&huart1,&RXBUF[0],1,0);
HAL_UART_Receive_IT(&huart1,&RXBUF[0],1);
if(RXBUF[0]!=0x0a)RxBuff[res++]=RXBUF[0];
else
{
res=0;
printf("接收到字符为:%s\n",RxBuff);
}
}
}
通过串口工具发送openled1打开LED发送closeled1关闭LED