一分钟上手Cortext-M85单片机串口

关注+星标公众,不错过精彩内容

86b33b69a7f6e6f4ee02c2efb9a9cbae.gif

作者 | strongerHuang

微信公众号 | strongerHuang

串口是最常见的通信方式之一,也是单片机调试最常见的通信接口,也是现在的单片机必备的通信接口,最新、最强的Cortext-M85内核的单片机也不列外。

今天就结合瑞萨Cortext-M85内核RA8系列单片机给大家讲讲串口输出实现的方法,简单到只需要一分钟左右即可配置好。

准备工作

要快速使用瑞萨Cortext-M85内核RA8系列单片机,需要有一些准备工作。

1、下载安装集成开发环境

瑞萨单片机的集成开发工具(IDE)有很多,比如:瑞萨自家的e2s、Keil、 IAR等。

这里大家可以参看我之前分享的文章:

瑞萨RA8系列教程 | 瑞萨 RA8 开发环境e2s搭建

Keil系列教程_Keil介绍、下载、安装与注册

2、准备硬件板卡

虽然现在仿真工具都可以实现单片机的要一些功能,但我们最好还是在硬件实物上跑程序更能学会技术。

本教程就使用瑞萨CPKCOR_RA8D1B评估板,这块板卡使用RA8D1单片机,并集成了J-link,我们只需要用一根线连接电脑即可下载调试。

当然,如果你板卡没有集成J-Link,就需要单独准备一个。

以上就是主要的准备工作,其实也挺简单,入门都要准备的工作。

一分钟上手Cortext-M85单片机串口

e2s集成了很多功能,我们只需要动动鼠标就能快速创建并生成一个工程。

1、基于e2s快速创建一个工程

打开e2s,文件 -> 新建 -> 瑞萨C/C++项目 -> Renesas RA:

b35ff91a438319ea88a145bed2f520d7.png

86ce8d6a4b256672ae2ed6dd680731d5.png

输入工程名称,比如我们输入RA8D1_UART:

369dffe667546ae2ca399fb60ab70bc0.png

选择单片机型号,比如R7FA8D1BHEC:

7c2ba8bf2be55ef81100783660da08d7.png

然后,根据提示,一步一步下去,就可以创建一个RA8工程:

684f0d3e83e0fe4e0746058bef46d13e.png

5da53a8346c20a9422a237802223bd0c.png

c2189acc3b1642b0d51a53d37a95632c.png

2、配置串口

这里只需要根据图形化界面,简单配置一下串口即可使用串口。

我们在引脚(Pins)的位置,选择外设(Peripherals)-> SLI4,配置成异步通信模式:

9020757a3a8fcbf4ef3b3ce19957178b.png

在 Stacts -> New Stacts,新建一个UART:

8703ea75a01144edf4ab249eff3b9a24.png

然后,在配置一下UART参数(属性):

345e7a4fe7e4c4bfb9cdfdc8afc069c4.png

这里根据自己情况修改几个主要参数,其他大多数默认即可,如果需要中断,就需要自己定义一个中断回调函数:

45dbc2e1dcad6dd42d052baaf736f5d8.png

如果要使用printf就还需要配置两个地方,1、heap栈大小;2、工程设置。

77499c231142ac67e95cf395cabb5a41.png

a715404e936166c35d2d6097a15cc206.png

接下来就是添加代码了,我们添加两个源文件:bsp_debug_uart.h和bsp_debug_uart.c

其中bsp_debug_uart.h就是包含头文件,以及声明函数。

#ifndef __BSP_DEBUG_UART_H
#define  __BSP_DEBUG_UART_H
#include "hal_data.h"
#include <stdio.h>


void Debug_UART4_Init(void);


#endif

其中bsp_debug_uart.c源文件也比较简单:

#include "bsp_debug_uart.h"


/* 调试串口 UART4 初始化 */
void Debug_UART4_Init(void)
{
    fsp_err_t err = FSP_SUCCESS;
    
    err = R_SCI_B_UART_Open(&g_uart4_ctrl, &g_uart4_cfg);


    assert(FSP_SUCCESS == err);
}


/* 发送完成标志 */
volatile bool uart_send_complete_flag = false;


/* 串口中断回调 */
void debug_uart4_callback (uart_callback_args_t * p_args)
{
    switch (p_args->event)
    {
        case UART_EVENT_RX_CHAR:
        {
            /* 把串口接收到的数据发送回去 */
            R_SCI_B_UART_Write(&g_uart4_ctrl, (uint8_t *)&(p_args->data), 1);


            break;
        }
        case UART_EVENT_TX_COMPLETE:
        {
            uart_send_complete_flag = true;
            break;
        }
        default:
            break;
    }
}


/* 重定向 printf 输出 */
#if defined __GNUC__ && !defined __clang__
int _write(int fd, char *pBuffer, int size); //防止编译警告
int _write(int fd, char *pBuffer, int size)
{
    (void)fd;
    R_SCI_B_UART_Write(&g_uart4_ctrl, (uint8_t *)pBuffer, (uint32_t)size);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;


    return size;
}
#else
int fputc(int ch, FILE *f)
{
    (void)f;
    R_SCI_B_UART_Write(&g_uart4_ctrl, (uint8_t *)&ch, 1);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;


    return ch;
}
#endif

这样下来就算完成了,你往单片机发送什么字符,它就会给你发回来,比如:往里面发字符“A”

266b7291eaab03c297a531877b5b1c1c.png

到这里就完成了一个RA8单片机串口的配置,是不是很简单?对于有一定基础的朋友,基本上一分钟就能搞定。

------------ END ------------

675ae66bb03166868fdd0efed95e4f74.jpeg

使用OpenAMP框架实现多核处理器核间通信及应用

b59ea17ee9b5897dbcfdacfad64a6fc4.jpeg

分享一个轻量级的开源人脸识别算法

fb61e751396ba0bb5dbc536d09f87ccb.jpeg

单片机开发环境中Release和Debug的差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值