RA生态:串口和printf()函数重定向
UART 配置:点击 Stacks->New Stack -> Connectivity -> UART Driver on r_sci_uart
改的地方就上面一处,其他地方默认即可,默认串口配置:115200波特率,无校验一停止通道0
R_SCI_UART_Open()函数:开启和初始化 UART
/* Open the transfer instance with initial configuration. */fsp_err_t err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);assert(FSP_SUCCESS == err);
回调函数 user_uart_callback ():(函数名自定义):相当于串口中断,在这里的案例是接收中断
volatile bool uart_send_complete_flag = false ;void user_uart_callback (uart_callback_args_t * p_args){if (p_args-> event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true ;}}
R_SCI_UART_Write()函数:进行串口数据输出
unsigned char buff[]= "RA E2STUDIO" ;uint8_t buff_len = strlen (buff);err = R_SCI_UART_Write(&g_uart0_ctrl, buff, buff_len);if (FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false ){}uart_send_complete_flag = false ;
sprintf()函数:这个应该很多人用过了吧
直接给功能示例了:把格式化的数据写入某个字符串缓冲区
sprintf (send_buff, "\nHello World!.\n" );uint8_t len = strlen (send_buff);err = R_SCI_UART_Write(&g_uart0_ctrl, send_buff, len);if (FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false ){}uart_send_complete_flag = false ;memset (send_buff, '\0' , sizeof ( 100 ));
printf()函数:
式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。
正在编写步骤时经常会用到此函数
设置 E2STUDIO 堆栈:BSP处设置
( RA-Eco-RA2L1-48PIN-V1.0 设置 heap size
0x2000 )
( RA-Eco-RA2E1-48PIN-V1.0 设置 heap size
0x1000 )
printf 输出重定向到串口:将 printf 的输出重定向到串口, 然后通过串口将数据发送出去
#ifdef __GNUC__ //串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{err = R_SCI_UART_Write(&g_uart0_ctrl, ( uint8_t *)&ch, 1 );if (FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false ){}uart_send_complete_flag = false ;return ch;}int _write( int fd, char *pBuffer, int size){for ( int i= 0 ;i<size;i ){__io_putchar(*pBuffer );}return size;}
printf 输出
int int_i= 55 ;float float_i= 66.20f ;char char_i[]= "hello e2studio" ;while ( 1 ){printf ( "int_i=%d\n" ,int_i);printf ( "float_i=%.2f\n" ,float_i);printf ( "char_i='%s'\n" ,char_i);R_BSP_SoftwareDelay( 1000 , BSP_DELAY_UNITS_MILLISECONDS); // NOLINT100->160}
完整例程:
#include "hal_data.h"#include <stdio.h>FSP_CPP_HEADERvoid R_BSP_WarmStart ( bsp_warm_start_event_t event);FSP_CPP_FOOTERfsp_err_t err = FSP_SUCCESS ; unsigned char send_buff[100];volatile bool uart_send_complete_flag = false;void user_uart_callback ( uart_callback_args_t * p_args){if (p_args->event == UART_EVENT_TX_COMPLETE ){uart_send_complete_flag = true;}}#ifdef __GNUC__ // 串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar( int ch)#else#define PUTCHAR_PROTOTYPE int fputc( int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{err = R_SCI_UART_Write(&g_uart0_ctrl, ( uint8_t *)&ch, 1);if ( FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false){}uart_send_complete_flag = false;return ch;}int _write ( int fd, char *pBuffer, int size){for ( int i=0;i<size;i ){__io_putchar(*pBuffer );}return size;}void hal_entry ( void ){/* TODO : add your own code here *//* Open the transfer instance with initial configuration. */err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);assert( FSP_SUCCESS == err);unsigned char buff[]= "RA E2STUDIO" ;uint8_t buff_len = strlen (buff);err = R_SCI_UART_Write(&g_uart0_ctrl, buff, buff_len);if ( FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false){}uart_send_complete_flag = false;sprintf (send_buff, "\nHello World!.\n" );uint8_t len = strlen (send_buff);err = R_SCI_UART_Write(&g_uart0_ctrl, send_buff, len); if ( FSP_SUCCESS != err) __BKPT();while (uart_send_complete_flag == false){}uart_send_complete_flag = false;memset (send_buff, '\0' , sizeof (100));int int_i=55;float float_i=66.20f;char char_i[]= "hello e2studio" ;while (1){printf ( "int_i=%d\n" ,int_i);printf ( "float_i=%.2f\n" ,float_i);printf ( "char_i='%s'\n" ,char_i);R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS );// NOLINT100->160}#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();#endif}
效果演示:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgjicih
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13