0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

投稿 | 基于IAR搭建RA MCU 串口打印

RA生态工作室 2022-11-04 10:40 次阅读

RA MCU 生态工作室致力于构建一个完善的 RA 生态,这将会是一个好玩有趣的开放社区,也提供各种RA相关问题的解决方法。

1.概述

通过RASC创建一个串口工程,具体配置如下,用户可以根据自己定义来配置串口相关的基本参数

2.创建工程

STEP1:RASC创建工程

8f3f6564-0f69-11ed-9ade-dac502259ad0.png

STEP2:选芯片型号跟IDE类型

8f685ae6-0f69-11ed-9ade-dac502259ad0.png

STEP3:选择芯片型号

8f9c5a94-0f69-11ed-9ade-dac502259ad0.png

STEP4:选择无操作系统

8faf3448-0f69-11ed-9ade-dac502259ad0.png

STEP5:勾选确认工程

8fd5577c-0f69-11ed-9ade-dac502259ad0.png

STEP6:配置串口号跟IO口

8ffb7cfe-0f69-11ed-9ade-dac502259ad0.png

STEP7:添加串口驱动

90320f1c-0f69-11ed-9ade-dac502259ad0.png

STEP8:配置串口

9059af72-0f69-11ed-9ade-dac502259ad0.png

STEP9:配置串口基本属性

90820bf2-0f69-11ed-9ade-dac502259ad0.png

STEP10:生成工程

90a1db08-0f69-11ed-9ade-dac502259ad0.png


3.代码

STEP11:打开工程

90c73786-0f69-11ed-9ade-dac502259ad0.png

STEP12:添加代码

90eb6e12-0f69-11ed-9ade-dac502259ad0.png

STEP13:具体代码如下


void hal_entry( void )
{
    /* TODO: add your own code here */
    fsp_err_t err = R_SCI_UART_Open( &g_uart9_ctrl, &g_uart9_cfg );
    assert( FSP_SUCCESS == err );
    while ( true )
    {
        printf( "Hello RA MCU \r\n" );
    }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

STEP14:添加头文件跟串口回调函数

912513b0-0f69-11ed-9ade-dac502259ad0.png

STEP15:具体代码如下


#include "hal_data.h"
#include "stdio.h"
FSP_CPP_HEADER
void R_BSP_WarmStart( bsp_warm_start_event_t event );
FSP_CPP_FOOTER
uint8_t g_transfer_complete = 0;
void g_uart9_cb( uart_callback_args_t* p_args )
{
    /* Handle the UART event */
    switch ( p_args->event )
    {
        /* Received a character */
        case UART_EVENT_RX_CHAR:
        {
            break;
        }
        /* Receive complete */
        case UART_EVENT_RX_COMPLETE:
        {

            break;
        }
        /* Transmit complete */
        case UART_EVENT_TX_COMPLETE:
        {
            g_transfer_complete = 1;
            break;
        }
        default:
        {
        }
    }
}

STEP16:添加打印接口重定向代码,具体如下

/*******************
 *
 * Copyright 1998-2017 IAR Systems AB.
 *
 * This is a template implementation of the "__write" function used by
 * the standard library.  Replace it with a system-specific
 * implementation.
 *
 * The "__write" function should output "size" number of bytes from
 * "buffer" in some application-specific way.  It should return the
 * number of characters written, or _LLIO_ERROR on failure.
 *
 * If "buffer" is zero then __write should perform flushing of
 * internal buffers, if any.  In this case "handle" can be -1 to
 * indicate that all handles should be flushed.
 *
 * The template implementation below assumes that the application
 * provides the function "MyLowLevelPutchar".  It should return the
 * character written, or -1 on failure.
 *
 ********************/

#include 

#pragma module_name = "?__write"

int MyLowLevelPutchar(int x)
{
  R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&x, 1);
  while(g_transfer_complete == 0); 
  g_transfer_complete = 0;
  return x;
 
}

/*
 * If the __write implementation uses internal buffering, uncomment
 * the following line to ensure that we are called with "buffer" as 0
 * (i.e. flush) when the application terminates.
 */

size_t __write(int handle, const unsigned char * buffer, size_t size)
{
  /* Remove the #if #endif pair to enable the implementation */
#if 1

  size_t nChars = 0;

  if (buffer == 0)
  {
    /*
     * This means that we should flush internal buffers.  Since we
     * don't we just return.  (Remember, "handle" == -1 means that all
     * handles should be flushed.)
     */
    return 0;
  }

  /* This template only writes to "standard out" and "standard err",
   * for all other file handles it returns failure. */
  if (handle != _LLIO_STDOUT && handle != _LLIO_STDERR)
  {
    return _LLIO_ERROR;
  }

  for (/* Empty */; size != 0; --size)
  {
    if (MyLowLevelPutchar(*buffer++) < 0)
    {
      return _LLIO_ERROR;
    }

    ++nChars;
  }

  return nChars;

#else

  /* Always return error code when implementation is disabled. */
  return _LLIO_ERROR;

#endif

}


4.工程配置

STEP17:工程配置

91445072-0f69-11ed-9ade-dac502259ad0.png

STEP18:弹出如下窗口

918e44a2-0f69-11ed-9ade-dac502259ad0.png


5.结果

STEP19:接上串口工具,打印如下

91b4ebfc-0f69-11ed-9ade-dac502259ad0.png


投稿:欣瑞利科技@Moxair

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16707

    浏览量

    348075
收藏 人收藏

    评论

    相关推荐

    【GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(2)使用 IAR 开发 GD32

    GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IAR、 GCC和Embedded Builder,客户可以根据个人喜好来选择相应的开发环境。
    的头像 发表于 08-08 15:40 380次阅读
    【GD32 <b class='flag-5'>MCU</b> 入门教程】一、GD32 <b class='flag-5'>MCU</b> 开发环境<b class='flag-5'>搭建</b>(2)使用 <b class='flag-5'>IAR</b> 开发 GD32

    RA MCU CANFD在FSP中的配置详解

    RA MCU CANFD在FSP中的配置详解
    的头像 发表于 06-19 08:06 278次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> CANFD在FSP中的配置详解

    芯海通用 MCU应用笔记 :在 IAR 及 MDK 开发环境下使用 printf 函数重定向移植差异指南

    和调试中,printf 函数是常用的打印函数,通常通过 fputc 接口的重定向,即可以通过 printf 输出串口的信息。 但在 IAR8.x 下,需要一些 IDE 的额外配置,MCU
    发表于 05-16 11:56

    如何使用RA MCU中ADC窗口比较功能

    如何使用RA MCU中ADC窗口比较功能
    的头像 发表于 04-12 08:06 227次阅读
    如何使用<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b>中ADC窗口比较功能

    瑞萨RA MCU家族推出集成Arm® Cortex®-M23内核的全新RA0系列

    瑞萨RA MCU家族推出全新的RA0系列,RA0E1产品组是入门级简易MCU,具有出色的成本效益和超低功耗。
    的头像 发表于 04-10 14:32 1038次阅读
    瑞萨<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b>家族推出集成Arm® Cortex®-M23内核的全新<b class='flag-5'>RA</b>0系列

    瑞萨电子RA家族推出RA8系列高算力通用MCU

    瑞萨电子RA家族推出RA8系列高算力通用MCU,是业界首款基于Arm® Cortex®-M85(CM85)内核的32位MCU,主频高达480Mhz,超过3000 CoreMark跑分。
    的头像 发表于 04-02 14:14 1195次阅读
    瑞萨电子<b class='flag-5'>RA</b>家族推出<b class='flag-5'>RA</b>8系列高算力通用<b class='flag-5'>MCU</b>

    RA家庭MCU 注入电流以防止损坏MCU

    电子发烧友网站提供《RA家庭MCU 注入电流以防止损坏MCU.pdf》资料免费下载
    发表于 02-21 08:33 0次下载
    <b class='flag-5'>RA</b>家庭<b class='flag-5'>MCU</b> 注入电流以防止损坏<b class='flag-5'>MCU</b>

    瑞萨电子推出全新RA MCU家族产品RA8

    瑞萨电子推出的全新RA MCU家族产品RA8,是业界首款搭载Arm Cortex-M85内核超高性能MCU,可满足工业自动化、家电、智能家居、消费电子、楼宇/家庭自动化、医疗和AI领域
    的头像 发表于 12-20 12:25 923次阅读
    瑞萨电子推出全新<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b>家族产品<b class='flag-5'>RA</b>8

    基于RASC的keil电子时钟制作(瑞萨RA)(2)----配置keil以及使用串口进行打印

    本篇文章主要介绍了一种基于瑞萨RA系列微控制器的电子时钟制作方法,重点关注如何利用瑞萨RA Smart Configurator生成串口配置,以及在具体实践中如何对瑞萨RA2E1开发板
    的头像 发表于 12-01 14:47 579次阅读
    基于RASC的keil电子时钟制作(瑞萨<b class='flag-5'>RA</b>)(2)----配置keil以及使用<b class='flag-5'>串口</b>进行<b class='flag-5'>打印</b>

    电子时钟制作(瑞萨RA)(1)----使用串口进行打印

    本篇文章主要介绍如何使用e2studio对瑞萨RA2E1开发板进行串口打印配置。
    的头像 发表于 12-01 13:56 550次阅读
    电子时钟制作(瑞萨<b class='flag-5'>RA</b>)(1)----使用<b class='flag-5'>串口</b>进行<b class='flag-5'>打印</b>

    IAR为瑞萨RA8系列MCU开发提供支持

    嵌入式开发软件和服务的全球领导者IAR今日宣布,其最新发布的IAR Embedded Workbench for Arm 9.40.2版本中无缝集成了对瑞萨(Renesas)RA8系列MCU
    的头像 发表于 11-02 17:08 920次阅读

    通过RA MCU和微型ROS简化机器人设计流程

    通过RA MCU和微型ROS简化机器人设计流程
    的头像 发表于 10-24 17:55 448次阅读
    通过<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b>和微型ROS简化机器人设计流程

    RA MCU CANFD在FSP中的配置详解

    在瑞萨RA系列MCU产品中,目前RA4E2、RA4T1、RA6E2、RA6T2和
    的头像 发表于 10-20 14:46 1119次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> CANFD在FSP中的配置详解

    RA2L1移植SEGGER RTT日志打印功能

    因为RA2L1开发板板载了JLINK-OB,那么我们完全可以通过SWD调试口去打印日志,从而不去用物理串口,这样不仅省了硬件串口资源占用,而且可以很快速的
    的头像 发表于 10-12 11:30 915次阅读
    <b class='flag-5'>RA</b>2L1移植SEGGER RTT日志<b class='flag-5'>打印</b>功能

    基于RA2L1实现串口DTC数据接收

    基于RA2L1实现串口DTC数据接收
    的头像 发表于 10-10 09:34 402次阅读
    基于<b class='flag-5'>RA</b>2L1实现<b class='flag-5'>串口</b>DTC数据接收