瑞萨单片机william hill官网
直播中

jf_66383146

2年用户 18经验值
擅长:嵌入式技术 EMC/MEI设计 EDA/IC设计
私信 关注

【瑞萨RA4系列开发板体验】 参考野火RA6M5的例程移至到RA4M2-mdk开发环境-printf串口重定向+systick延时

FSP SmartConfig 配置

heap配置:

image.png

LED配置:

image.png

image.png

sci串口配置:

image.png

image.png

image.png

image.png

image.png

MDK 代码编辑:

image.png

void hal_entry(void)
{

    /* TODO: add your own code here */
	
			uint32_t  i=0;
			double f=3.14159;
			char *str="Hello RA4m2!";
			R_BSP_PinAccessEnable ();  //启用对PFS寄存器的访问
	                SysTick_Init (1000);   //初始化系统时钟
			Debug_UART9_Init();//初始化串口
			R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
			while(1)
			{
				LED1_ON;
				SysTick_Delay(500,SYS_DELAY_UNITS_MILLISECONDS);
				printf("%s\n\r",str);
				printf("%f\n\r",f);
				printf("%d\n\r",i++);
				LED1_OFF;
				SysTick_Delay(500,SYS_DELAY_UNITS_MILLISECONDS);
				
			}
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

串口bsp_debug_uart.c

#include "bsp_debug_uart.h"


/* 调试串口 UART9 初始化 */
void Debug_UART9_Init(void)
{
    fsp_err_t err = FSP_SUCCESS;
    
    err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg);
    assert(FSP_SUCCESS == err);
}



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


/* 串口中断回调 */
void debug_uart9_callback (uart_callback_args_t * p_args)
{
    switch (p_args->event)
    {
        case UART_EVENT_RX_CHAR:
        {
            /* 把串口接收到的数据发送回去 */
            R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&(p_args->data), 1);
            break;
        }
        case UART_EVENT_TX_DATA_EMPTY:
        {
            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_UART_Write(&g_uart9_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_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;

    return ch;
}
#endif

bsp_SysTick.c

/**
 ******************************************************************************
 * [url=home.php?mod=space&uid=1455510]@file[/url]    bsp_SysTick.c
 * [url=home.php?mod=space&uid=40524]@author[/url]  fire
 * [url=home.php?mod=space&uid=644434]@version[/url] V1.0
 * @date    2022-7-13
 * [url=home.php?mod=space&uid=2666770]@Brief[/url]   SystemTick 系统滴答计时器的配置(可配置中断周期)和使用滴答计时器的延时函数
 ******************************************************************************
 * @attention
 *
 * 实验平台 : RA6M5
 * 公司     :http://www.embedfire.com
 * william hill官网
     :http://www.firebbs.cn
 * 淘宝     :http://firestm32.taobao.com
 *
 ******************************************************************************
 */

#include "bsp_SysTick.h"

static __IO uint32_t IT_nums;  //延时需要触发中断的次数
static uint32_t IT_Period;  //中断周期(单位为时钟节拍数)
/**
 * @brief  启动系统滴答计时器 SysTick
 * @param  IT_frequency: 滴答计时器每秒的中断次数
 * @retval 无
 */
void SysTick_Init(uint32_t IT_frequency)
{
    /* SystemFrequency在这里默认为200M
     * SystemFrequency / 1000    1ms中断一次
     * SystemFrequency / 100000  10us中断一次
     * SystemFrequency / 1000000 1us中断一次
     */
    IT_Period = SystemCoreClock / IT_frequency;
    uint32_t err = SysTick_Config (IT_Period);
    assert(err==0); //capture error
}

/**
 * @brief  延时程序
 * @param  delay: 延时的单位时间
 * @param  unit: 延时的单位
 * @retval 无
 */

void SysTick_Delay(uint32_t delay, sys_delay_units_t unit)
{
    uint32_t SumTime = delay * unit; //计算总延时时间(单位为时钟节拍数)
    IT_nums = SumTime/IT_Period;     //计算进入中断的次数
    while (IT_nums != 0);
}

/**
  * @brief  SysTick的中断服务函数
  * @param  无
  * @retval 无
  * @attention 用e2 studio编译会出现警告,但是没有影响,不需要管
  */

void SysTick_Handler(void)
{
    if (IT_nums != 0x00)
    {
        IT_nums--;
    }
}

/*********************************************END OF FILE**********************/

串口打印

image.png

详细说明可以参考 《瑞萨 RA 系列 FSP 库开发实战指南 基于野火启明 6M5 开发板》

更多回帖

发帖
×
20
完善资料,
赚取积分