瑞萨e2studio(9)----USRT通过定时器中断方式接收不定长数据
概述
本篇文章主要介绍如何使用e2studio对瑞萨单片机进行USRT通过定时器中断方式接收不定长数据。
需要样片的可以加qun申请:6_15061293 。
视频教学
听不到声音的请点击跳转进行观看。

csdn课程
csdn课程更加详细。
https://edu.csdn.net/course/detail/36131
完整代码下载
https://download.csdn.net/download/qq_24312945/84995168
硬件准备
首先需要准备一个开发板,这里我准备的是芯片型号R7FAM2AD3CFP的开发板:

开发板

新建工程

工程模板

保存工程路径

芯片配置
本文中使用R7FA4M2AD3CFP来进行演示。

工程模板选择

时钟设置
开发板上的外部高速晶振为12M,需要修改XTAL为12M.

UART配置
点击Stacks->New Stack->Driver->Connectivity -> UART Driver on r_sci_uart。

UART属性配置
由于开发板的typc-c接口所接的是串口9,故配置为通道9。

回调函数user_uart_callback ()
发送完毕可以用UART_EVENT_TX_COMPLETE进行判断。

设置e2studio堆栈

e2studio的重定向printf设置

C++ 构建->设置->GNU ARM Cross C Linker->Miscellaneous去掉Other linker flags中的 “--specs=rdimon.specs”

printf输出重定向到串口
打印最常用的方法是printf,所以要解决的问题是将printf的输出重定向到串口,然后通过串口将数据发送出去。
注意一定要加上头文件#include <stdio.h>
回调函数user_uart_callback ()
设置接受到0xff则输出已经输入的数据。
若接收到新的数据,使用R_GPT_Reset进行充值定时器计数。
printf_usart打印函数
打印已经接受的数据以及其长度。
定时器设置
点击Stacks->New Stack->Driver->Timers -> Timers Driver on r_gpt。

设置500ms无输入则输出已经输入的数据。
频率=时钟源/period,若设置计数时间为500ms一次,频率为2Hz,则period=50M/2=25000000

定时器回调函数timer0_callback()
完整代码

发送数据,延时500ms后打印

最后
以上的代码会在Q_QUN里分享。Q_QUN:6_15061293。
或者关注『记帖』,持续更新文章和学习资料!


