【STM32】串口

1.串口-printf

使用printf函数向串口发送东西


使用微库,用到了printf,

但是我们发现是不能发送的

因为底层printf是fputc,我们需要自己实现

后面FILE*P不用管,在fputc中调用

第一个参数为uart1的句柄

第二个为要输出的字符

第三个为一次要发送几个字节

第四个为采用轮询,一直死等,就绪

1s发送一次

2.串口接收

使用hal_uart_recevice函数和之前的transmit参数一样

根据data的值不同,我们可以点不同的灯,如果是1的话,翻转一下

GPIO_PIN_10引脚电平

在这之前,需要配置模式,直接给出代码,写很多遍了

c 复制代码
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.演示

串口接收

5.串口中断

使用轮训方式处理串口的话会一直被阻塞,使用串口中断方式的话,在串口数据没就绪之前都是执行main中的,不会阻塞等待串口

实现中断处理串口,实现第二个串口接收




灯是GPIOB,已经在stm32cubemx中配置过

串口处理函数在stm32f4xx_it.c中

里面是处理串口一的中断处理函数,跳过去看看,

真正的中断处理函数在

可以理解为纯虚函数,必须重写

中断函数实现

相关推荐
夜阑寄语4 分钟前
基础元器件
单片机·嵌入式硬件
北山有鸟5 分钟前
常用的快捷键
linux·前端·chrome·单片机·学习
QH1392923188012 分钟前
R&S®SMBV100B 矢量信号发生器 5G/Wi-Fi/GNSS 主力源
网络·科技·嵌入式硬件·集成测试·信息与通信
山木嵌入式29 分钟前
FreeRTOS从入门到进阶:核心概念与调度原理全解析
stm32·操作系统·嵌入式·freertos·rtos
方山子哦2 小时前
软硬件uart、iic、spi、can,及蓝牙和usb的区别及应用场景
单片机·嵌入式硬件
czwxkn3 小时前
pcb设计-电路:IO口的灌电流与拉电流
单片机·嵌入式硬件
朴人3 小时前
【stm32无感FOC理论与实践:滑模观测器】【03 代码实践】
stm32·foc·永磁同步电机·pmsm·smo·无感·滑模
一路往蓝-Anbo4 小时前
第一章:嵌入式TDD-环境搭建
网络·stm32·单片机·嵌入式硬件·tdd
FreakStudio10 小时前
硬件版【Cursor】?aily blockly IDE尝鲜封神,实战硬伤尽显
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
SmartRadio15 小时前
STM32WLE5 LoRa 射频匹配优化(V1.1 版)
stm32·单片机·嵌入式硬件·阻抗匹配