1.串口-printf

 使用printf函数向串口发送东西
 
 
 
 使用微库,用到了printf,
 但是我们发现是不能发送的
 
 因为底层printf是fputc,我们需要自己实现
 
 后面FILE*P不用管,在fputc中调用
 
第一个参数为uart1的句柄
 
 第二个为要输出的字符
 第三个为一次要发送几个字节
 第四个为采用轮询,一直死等,就绪
 

 1s发送一次
 
 
2.串口接收

 使用hal_uart_recevice函数和之前的transmit参数一样
 根据data的值不同,我们可以点不同的灯,如果是1的话,翻转一下
 GPIO_PIN_10引脚电平
 在这之前,需要配置模式,直接给出代码,写很多遍了
void MY_INIT(void)
{
   __HAL_RCC_GPIOB_CLK_ENABLE();
   GPIO_InitTypeDef GPIO_INIT;
	
   GPIO_INIT.Pin=GPIO_PIN_10|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0; 
	 GPIO_INIT.Mode=GPIO_MODE_OUTPUT_PP;
	 GPIO_INIT.Pull=GPIO_NOPULL;  
	 GPIO_INIT.Speed= GPIO_SPEED_FREQ_LOW;
	 HAL_GPIO_Init(GPIOB,&GPIO_INIT);
}
根据接收数据翻转对应引脚的电平
 
3.接收字符串
接收字符串的话,我们可以没遇到‘\n’就先把他放在buffer中,然后遇到了之后使用printf将buffer发送回去
 
4.演示

串口接收
![【c++进阶[五]】list相关接口介绍及list和vector的对比](https://i-blog.csdnimg.cn/direct/d4cc160f5ae84eae8c62c1f9363e3fd2.png)

















![JavaEE:多线程进阶(JUC [java.util.concurrent] 的常见类)](https://i-blog.csdnimg.cn/direct/1a8f3fd2dc8f4323abd849f7672326a8.png)
