查看: 768|回复: 2

【瑞萨RA4系列开发板体验】 参考野火RA6M5的例程移至到RA4M2...

[复制链接]

116

主题

133

帖子

3768

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3768
发表于 2023-2-24 16:53:21 | 显示全部楼层 |阅读模式
【瑞萨RA4系列开发板体验】 参考野火RA6M5的例程移至到RA4M2-mdk开发环境-printf串口重定向+systick延时
作者:jf_66383146

FSP SmartConfig 配置
heap配置:

LED配置:


sci串口配置:





MDK 代码编辑:

  1. void hal_entry(void)
  2. {

  3.     /* TODO: add your own code here */
  4.        
  5.                         uint32_t  i=0;
  6.                         double f=3.14159;
  7.                         char *str="Hello RA4m2!";
  8.                         R_BSP_PinAccessEnable ();  //启用对PFS寄存器的访问
  9.                         SysTick_Init (1000);   //初始化系统时钟
  10.                         Debug_UART9_Init();//初始化串口
  11.                         R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
  12.                         while(1)
  13.                         {
  14.                                 LED1_ON;
  15.                                 SysTick_Delay(500,SYS_DELAY_UNITS_MILLISECONDS);
  16.                                 printf("%s\n\r",str);
  17.                                 printf("%f\n\r",f);
  18.                                 printf("%d\n\r",i++);
  19.                                 LED1_OFF;
  20.                                 SysTick_Delay(500,SYS_DELAY_UNITS_MILLISECONDS);
  21.                                
  22.                         }
  23. #if BSP_TZ_SECURE_BUILD
  24.     /* Enter non-secure code */
  25.     R_BSP_NonSecureEnter();
  26. #endif
  27. }
复制代码
串口bsp_debug_uart.c
  1. #include "bsp_debug_uart.h"


  2. /* 调试串口 UART9 初始化 */
  3. void Debug_UART9_Init(void)
  4. {
  5.     fsp_err_t err = FSP_SUCCESS;
  6.    
  7.     err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg);
  8.     assert(FSP_SUCCESS == err);
  9. }



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


  12. /* 串口中断回调 */
  13. void debug_uart9_callback (uart_callback_args_t * p_args)
  14. {
  15.     switch (p_args->event)
  16.     {
  17.         case UART_EVENT_RX_CHAR:
  18.         {
  19.             /* 把串口接收到的数据发送回去 */
  20.             R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&(p_args->data), 1);
  21.             break;
  22.         }
  23.         case UART_EVENT_TX_DATA_EMPTY:
  24.         {
  25.             uart_send_complete_flag = true;
  26.             break;
  27.         }
  28.         default:
  29.             break;
  30.     }
  31. }


  32. /* 重定向 printf 输出 */
  33. #if defined __GNUC__ && !defined __clang__
  34. int _write(int fd, char *pBuffer, int size); //防止编译警告
  35. int _write(int fd, char *pBuffer, int size)
  36. {
  37.     (void)fd;
  38.     R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)pBuffer, (uint32_t)size);
  39.     while(uart_send_complete_flag == false);
  40.     uart_send_complete_flag = false;

  41.     return size;
  42. }
  43. #else
  44. int fputc(int ch, FILE *f)
  45. {
  46.     (void)f;
  47.     R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
  48.     while(uart_send_complete_flag == false);
  49.     uart_send_complete_flag = false;

  50.     return ch;
  51. }
  52. #endif
复制代码
bsp_SysTick.c
  1. /**
  2. ******************************************************************************
  3. * [url=home.php?mod=space&uid=1455510]@file[/url]    bsp_SysTick.c
  4. * [url=home.php?mod=space&uid=40524]@author[/url]  fire
  5. * [url=home.php?mod=space&uid=644434]@version[/url] V1.0
  6. * @date    2022-7-13
  7. * [url=home.php?mod=space&uid=2666770]@Brief[/url]   SystemTick 系统滴答计时器的配置(可配置中断周期)和使用滴答计时器的延时函数
  8. ******************************************************************************
  9. * @attention
  10. *
  11. * 实验平台 : RA6M5
  12. * 公司     :http://www.embedfire.com
  13. * 论坛     :http://www.firebbs.cn
  14. * 淘宝     :http://firestm32.taobao.com
  15. *
  16. ******************************************************************************
  17. */

  18. #include "bsp_SysTick.h"

  19. static __IO uint32_t IT_nums;  //延时需要触发中断的次数
  20. static uint32_t IT_Period;  //中断周期(单位为时钟节拍数)
  21. /**
  22. * @brief  启动系统滴答计时器 SysTick
  23. * @param  IT_frequency: 滴答计时器每秒的中断次数
  24. * @retval 无
  25. */
  26. void SysTick_Init(uint32_t IT_frequency)
  27. {
  28.     /* SystemFrequency在这里默认为200M
  29.      * SystemFrequency / 1000    1ms中断一次
  30.      * SystemFrequency / 100000  10us中断一次
  31.      * SystemFrequency / 1000000 1us中断一次
  32.      */
  33.     IT_Period = SystemCoreClock / IT_frequency;
  34.     uint32_t err = SysTick_Config (IT_Period);
  35.     assert(err==0); //capture error
  36. }

  37. /**
  38. * @brief  延时程序
  39. * @param  delay: 延时的单位时间
  40. * @param  unit: 延时的单位
  41. * @retval 无
  42. */

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

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

  55. void SysTick_Handler(void)
  56. {
  57.     if (IT_nums != 0x00)
  58.     {
  59.         IT_nums--;
  60.     }
  61. }

  62. /*********************************************END OF FILE**********************/
复制代码
串口打印

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

回复

使用道具 举报

9

主题

95

帖子

9230

积分

论坛元老

Rank: 8Rank: 8

积分
9230
发表于 2023-2-25 10:53:19 | 显示全部楼层

刚好有这块板子
回复

使用道具 举报

3

主题

195

帖子

1065

积分

金牌会员

Rank: 6Rank: 6

积分
1065
发表于 2023-3-14 10:13:41 | 显示全部楼层

板子有点贵窝
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:133精华:0

RA_Lance

主题: 92帖子:132精华:9

lugl

主题: 38帖子:126精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:95精华:0
快速回复 返回顶部 返回列表