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

jf_92517703

4年用户 24经验值
擅长:测量仪表,嵌入式技术
私信 关注

【瑞萨RA4系列开发板体验】3. 瑞萨RA系列MCU-UART使用

1.硬件信息

图片.png

2.rasc配置

2.1sci-usart 配置

图片.png

2.2 stack配置

图片.png

图片.png

图片.png
配置注意- stack的通道必须和sci的数值一致
图片.png

2.3串口属性属性

图片.png

2.4 修改堆得大小

默认堆得大小是0,在使用printf函数时候需要堆得空间所以配置一下堆

图片.png

软件编写

bsp_debug_uart.c

#include "bsp_debug_uart.h"
/* 调试串口 UART4 初始化 */
void bsp_uart_init(void)
{
	fsp_err_t err = FSP_SUCCESS;
	err = R_SCI_UART_Open (&g_uart0_ctrl, &g_uart0_cfg);
	assert(FSP_SUCCESS == err);
}

/* 发送完成标志 */
volatile bool uart_send_complete_flag = false;
/* 串口中断回调 */
void uart0_callback (uart_callback_args_t * p_args)
{
	switch (p_args->event)
	{
		case UART_EVENT_RX_CHAR:
		{
		/* 把串口接收到的数据发送回去 */
		R_SCI_UART_Write(&g_uart0_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_UART_Write(&g_uart0_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_uart0_ctrl, (uint8_t *)&ch, 1);
	while(uart_send_complete_flag == false);
	uart_send_complete_flag = false;
	return ch;
}
#endif

bsp_debug_uart.h

#ifndef __BSP_UART_H__
#define __BSP_UART_H__

#include "hal_data.h"
#include "stdio.h"
void bsp_uart_init(void);

#endif

hal_entery.c

void hal_entry(void)
{
    /* TODO: add your own code here */
	//初始化io
	R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
	bsp_uart_init();
	printf("hello RA4\\r\\n");
	//
	while(1)
	{
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
		R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); //延时 100毫秒
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
		R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); //延时 100毫秒
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH);
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_LOW);
		R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); //延时 100毫秒
		R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_HIGH);
	}
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif

效果

图片.png

回帖(1)

华仔stm32

2022-12-1 14:12:26
非常感,这么好的帖子分享。
举报

更多回帖

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