野火STM32电机系列(二)Cubemx配置串口+液晶接口移植

接上一节内容,目前已经配置好了按键和LED灯的控制

从本节开始,Cubemx生成后的代码将移植到之前的项目中

1 Cubemx串口配置

把上次的例子复制一份到新的文件夹中

然后打开 

查看板子原理图,所用串口1引脚为PB6(RX),PB7(TX)

 

 

 PB7同理

 使能串口(接受)中断

 生成代码

2 串口代码

在串口头文件中添加

串口文件中添加中断回调函数,改变输入输出接口函数


/* USER CODE BEGIN 1 */

//清空接收缓冲
void uart_FlushRxBuffer(void)
{
  UART_RxPtr = 0;
  UART_RxBuffer[UART_RxPtr] = 0;
}
//接受中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	
			//测试是否进入接受中断
		HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, GPIO_PIN_RESET);
	
	
	
		HAL_UART_Receive_IT(&huart1, &UART_RxPtr, 1);
}
/*****************  发送字符 **********************/
void Usart_SendByte(uint8_t str)
{
  HAL_UART_Transmit(&huart1, &str, 1, 1000);
}
/*****************  发送字符串 **********************/

void Usart_SendString(uint8_t *str)
{
	unsigned int k=0;
  do 
  {
      HAL_UART_Transmit(&huart1,(uint8_t *)(str + k) ,1,1000);
      k++;
  } while(*(str + k)!='\0');
  
}
///重定向c库函数printf到串口DEBUG_USART,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
	/* 发送一个字节数据到串口DEBUG_USART */
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);	
	
	return (ch);
}

///重定向c库函数scanf到串口DEBUG_USART,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
		
	int ch;
	HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 1000);	
	return (ch);
}
/* USER CODE END 1 */

记得定义数组和头文件

 编译+烧录  使用野火的串口调试助手,在发送数据后进入串口中断LED灯会点亮,配置成功

 3 串口程序移植+液晶显示程序移植(选做)

液晶显示的文件移植了(选做)由于移植液晶显示太麻烦,于是直接用液晶显示例程当工程源文件,把之前的配置移植到里面

 把中断文件里的usart中断加上

 把头文件替换,错报缺的补上,初始化函数加上之前的功能,编译通过后LCD、KEY、LED、串口功能正常运行,移植成功

猜你喜欢

转载自blog.csdn.net/qq_49552487/article/details/127408130