STM32F303 NUCLEO cubeMX串口收发例程

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

自从ST推出了cubeMX工具以后,开发STM32系列的项目就变得非常简单了。

以串口为例,只需要简单配置一下串口的属性,然后自动生成项目代码,就可以直接发送数据了。

串口属性中NVIC中需要enable串口中断,这样可以实现高效串口收发。

PERIPHERALS	MODES	FUNCTIONS	PINS
SYS	Serial Wire	SYS_JTCK-SWCLK	PA14
SYS	Serial Wire	SYS_JTMS-SWDIO	PA13
SYS	SysTick	SYS_VS_Systick	VP_SYS_VS_Systick
USART1	Asynchronous	USART1_RX	PA10
USART1	Asynchronous	USART1_TX	PA9

Pin Nb	PINs	FUNCTIONs	LABELs
21	PA5	GPIO_Output	
42	PA9	USART1_TX	
43	PA10	USART1_RX	
46	PA13	SYS_JTMS-SWDIO	
49	PA14	SYS_JTCK-SWCLK	

不过配置好的项目代码在需要接收的场合使用并不太完善。但是通过阅读配置好的代码发现,示例代码提供了__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart),既然是__weak,那就是我们可以重写这个函数,类似于C++的重载特性。所以只需要重构一下void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)这个回调函数,每次有接收中断产生后,程序就会自动调用这个回调函数。

所以我们只需要在这个回调函数中保存好接收的数据到接收缓冲区就能实现串口接收功能。

另外,在main函数增加接收数据结束判断UART1_ReceiveCHK(),以时间间隔大于30mS为结束条件,这样就可以实现完整的收发功能了。(当然,也可以参照AT命令的\R\N来判断结束,缺点是无法实现任意数据收发。)
int main(void){
  while

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值