布洛芬治什么| 顽固不化是什么意思| 出家人是什么意思| ys是什么意思| 空调买什么品牌的好| 睡醒后口干口苦是什么原因| 阴道瘙痒用什么药最好| 护身符是什么意思| tag是什么意思| 凶神宜忌是什么意思| 什么的旋律| 红色加绿色是什么颜色| 谨记是什么意思| 为什么会子宫内膜增厚| 守夜是什么意思| 逍遥丸什么时候吃最好| 拉肚子能喝什么| 白发是什么原因引起的| 牙龈黑紫色是什么原因| 拉肚子吃什么食物| 喝什么利尿效果最好| 血淋是什么意思| 神经官能症是什么症状| 肚脐眼连接体内的什么器官| 眼睛发涩是什么原因导致的| 肝不好挂什么科室| 女生适合抽什么烟| 吃什么对胃好| 百利甜酒兑什么最好喝| 眼睛痒流泪是什么原因| 胎停有什么症状| 水果都有什么| 十月份是什么星座的| 肚脐眼上面疼是什么原因| 蚊子爱咬什么样的人| 什么是违反禁令标志指示| 胆的作用和功能是什么| 女人梦见鞋子什么预兆| 事无巨细是什么意思| 香水前调中调后调是什么意思| 滑膜炎吃什么药能治好| 物极必反什么意思| 三点水卖读什么| 灰蓝色是什么颜色| 肠道消炎用什么药最好| 直径是什么| 什么是地包天牙齿| 抵抗力差吃什么可以增强抵抗力| 95年的属什么生肖| 咖啡加奶有什么坏处和好处| 结肠炎吃什么药效果最好| 一什么田野| 蒲公英有什么好处| 鸡吃什么长得又快又肥| 当归有什么作用和功效| 头痛是什么原因| 程度是什么意思| 大圣归来2什么时候上映| 火龙果有什么营养| 嫡庶是什么意思| 什么是修行人| 火乐念什么| 肾阴虚吃什么中成药| 电商五行属什么| 干眼症是什么原因引起的| 胸部检查挂什么科| 为什么不能指彩虹| 什么水果含维生素c最多| 送百合花代表什么意思| 糖尿病筛查做什么检查| 防小人应该佩戴什么| 麦穗鱼吃什么| 怀孕初期流产有什么症状| 缺蛋白质吃什么补得快| 惟字五行属什么| 健胃消食片什么时候吃最好| 头痛吃什么药效果好| 王王是什么字| 捞人什么意思| 猫的偏旁叫什么| 为什么容易出汗| 羊水少吃什么| 吊客是什么意思| 为什么叫基围虾| 面线是什么| 晒伤涂什么药膏| 溃烂用什么药治愈最快| 蹭蹭是什么意思| 干疮是什么样子的图片| 石斛花有什么功效| 胃口不好吃什么| 五更是什么时辰| 五个月的宝宝能吃什么辅食| 发烧看什么科| 雪燕是什么东西| 甲状腺肿物是什么意思| 高同型半胱氨酸血症是什么病| 学美容要学些什么| 12月11号是什么星座| 什么护肤品| 一个土一个斤念什么| 宝宝囟门什么时候闭合| 重庆是什么地形| 安宫牛黄丸什么时候吃最好| 眼睛干痒用什么眼药水| 办护照需要什么材料| 一个胸大一个胸小是什么原因| 地级市副市长是什么级别| 盗汗是什么原因| 肾阴虚吃什么中成药| 苹果浓缩汁是什么| 啼笑皆非的意思是什么| 崖柏对人体有什么好处| 小孩手麻是什么原因| 梦见撞车是什么预兆| 龋齿和蛀牙有什么区别| 无印良品是什么意思| 隐血十一是什么意思| 阑尾有什么用| 艾滋病一年有什么症状| 糖宝是什么虫| 残留是什么意思| 月亮为什么是红色的| 1964年是什么生肖| 五月天主唱叫什么名字| 取环后应该注意什么| 脾胃虚弱吃什么好| 凌晨三四点是什么时辰| 为什么突然有狐臭了| 嘴唇颜色深是什么原因| 幽门螺杆菌吃什么药好| 天秤座属于什么星象| 窦骁的父母是干什么的| 风光秀丽的什么| 白色念珠菌是什么病| 靳东妹妹叫什么名字| 高压氧是什么| 喝醋有什么好处| 四级什么时候报名| 载脂蛋白b高是什么原因| 鲁班姓什么| 百字五行属什么| 刮宫后需要注意什么| 经常性偏头疼是什么原因| 怀孕吐得厉害吃什么可以缓解| 西瓜坏了是什么样| 卵巢囊肿术后吃什么食物好| 高大上的意思是什么| 重度贫血是什么原因引起的| 甲硝唑的副作用是什么| 自省是什么意思| 看望老人买什么礼物好| 为什么挠脚心会痒| 无私的动物是什么生肖| 焯是什么意思| 萎缩性阴道炎用什么药| 857是什么意思| 白细胞高什么原因| 什么纸贵| 鱼油功效和作用是什么| 9岁属什么生肖| 痔疮发痒是什么原因| 深夜里买醉是什么歌| 今日是什么日子| 男人都喜欢什么样的女人| 乳腺癌挂什么科| 破窗效应是什么意思| 七月十三什么星座| 什么是超七水晶| 98年属什么| 支配是什么意思| 咖啡有什么营养| 伤情鉴定需要什么材料| 遵命是什么意思| 痰是绿色的是什么原因| 卤水是什么东西| 倒立有什么好处和坏处| 嗓子有痰是什么原因| 深圳居住证有什么用| 舌质是什么| 七月十五有什么忌讳| 下眼睑红肿是什么原因| 晚上夜尿多是什么原因| 哀鸿遍野什么意思| 轻食是什么| 一岁宝宝口臭是什么原因引起的| 打封闭是什么意思| 憋不住尿是什么原因| 梦见皮带断了什么预兆| 眼睛皮痒是什么原因| 脚背痛什么原因| 什么是超纤皮| 脚发烫是什么原因| 丙烯颜料用什么洗掉| dream car是什么意思| 嘚儿是什么意思| 什么是事业| 永恒是什么意思| 荷花的别称是什么| 数字7代表什么意思| 田七与三七有什么区别| 精神病吃什么药最好| 低压低有什么危害| 备孕做什么检查| 雨渐耳符咒有什么用| 夏天吹空调感冒吃什么药| 子宫占位是什么意思| 人言可畏什么意思| 上海龙华医院擅长什么| 东南方是什么生肖| 皇帝自称什么| ff是什么牌子| 吃什么都吐是什么原因| 吃维生素a有什么好处| 五官指的是什么| 小透明是什么意思| 悬案是什么意思| 紫外线过敏是什么症状| 肠炎不能吃什么东西| 中心思想是什么意思| 富态是什么意思| 脸上长斑的原因是什么引起的| 三点水是什么字| 6.24什么星座| 孕妇喝咖啡有什么危害| 汗斑用什么药膏| 2.0是什么意思| 回不到我们的从前是什么歌| 憨憨是什么意思| 虹字五行属什么| 舌头有问题应该挂什么科| 会阴是什么部位| 第一颗原子弹叫什么| 吃什么提神醒脑抗疲劳| 清补凉是什么| 光明会到底是干什么的| 1945属什么生肖| 秦始皇的名字叫什么| 新零售是什么意思| sneakers是什么意思| 医保统筹是什么意思| 临床试验是什么意思| 绿豆不能和什么同吃| 送爸爸什么礼物最实用| 鱼腥草有什么功效| 双抗是什么意思| 时光荏苒岁月如梭是什么意思| 每天都做梦是什么原因| 禾加末念什么| 本科和专科是什么意思| 血小板压积偏高是什么原因| 氧化是什么意思| 孕妇多吃什么水果比较好| 寅时属什么生肖| 糖化血红蛋白高是什么意思| 替身是什么意思| anode是什么意思| 小孩长得慢是什么原因| 公积金缴存基数是什么意思| 为什么女的会流水怎么回事| 多五行属什么| 脉搏弱是什么原因| 窦骁的父母是干什么的| 风暴是什么意思| 百度

瑞萨RA0单片机连载之移植面向对象之UART驱动

嵌入式系统   作者:lulugl 时间:2025-08-05来源:EEPW
百度 1935年  1月,出席在遵义召开的中共中央政治局扩大会议,支持毛泽东的正确主张。

串口是单片机最常用的外设之一。本次创建面向对象来移植UART 的驱动。

1   学习例程

百问网的面向对象的这UART驱动,源代码为百问网的RA6M5 的驱动,我这里做了细小的改动而实现快速的驱动。

2   创建工程

在上一篇瑞萨RA0单片机连载之三基于面向对象的LED灯(刊载于《电子设计与芯片应用(10 月刊)》)的基础上添加串口的驱动。

1.本次驱动选用的驱动的串口为r_sau_uart0, 配置的IO 为P100,P101 为TX 与RX。

打开RASC, 添加uart0添回串口回调函数为sau_uart_callback。并生成工程。

1732196677847980.png

2.移植dev_uart.c/h、drv_uart.c/h 到工程中:

1732196769396381.png

3. 其代码dev_uart.c 如下:

view plaincopy to clipboardprint?

1. #include “dev_uart.h”

2. #include <drivers.h>

3.

4. #include <stdlib.h>

5. #include <string.h>

6. #include <stdio.h>

7.

8.

9. static struct UartDev *gHeadUartDev;

10.

11. void UartDevicesRegister(void)

12. {

13. UartDevicesCreate();

14. UartDeviceList();

15. }

16.

17. void UartDeviceInsert(struct UartDev *ptdev)

18. {

19. if(NULL == gHeadUartDev)

20. gHeadUartDev = ptdev;

21. else

22. {

23. ptdev->next = gHeadUartDev;

24. gHeadUartDev = ptdev;

25. }

26. }

27.

28. struct UartDev * UartDeviceFind(const char

*name)

29. {

30. struct UartDev *ptdev = gHeadUartDev;

31. while(ptdev)

unsigned char * const buf, unsigned int length);

19.

20. static volatile bool gUart0TxCplt = false;

21. static volatile bool gUart0RxCplt = false;

22.

23. static struct UartDev gLogDevice = {

24. .name = “Log”,

25. .channel = 0,

26. .Init = UARTDrvInit,

27. .Read = UARTDrvRead,

28. .Write = UARTDrvWrite,

29. .next = NULL

30. };

31.

32. void UartDevicesCreate(void)

33. {

34. UartDeviceInsert(&gLogDevice);

35. gLogDevice.Init(&gLogDevice);

36. }

37.

38. static int UARTDrvInit(struct UartDev *ptdev)

39. {

40. if(NULL == ptdev) return -EINVAL;

41.

42. switch(ptdev->channel)

43 {

44. case 0:

45. {

46. fsp_err_t err = g_uart0.p_api->open(g_

uart0.p_ctrl, g_uart0.p_cfg);

47. assert(FSP_SUCCESS == err);

48. break;

49. }

50.

51. case 1:case 2:

52. case 3:case 4:case 5:

53. case 6:

54. {

55. break;

56. }

57. case 7:

58.

59. case 8:case 9:

60. break;

61. default:break;

62. }

63.

64. return ESUCCESS;

65. }

66.

67. static int UARTDrvWrite(struct UartDev *ptdev,

unsigned char * const buf, unsigned int length)

68. {

69. if(NULL == ptdev) return -EINVAL;

70. if(NULL == buf) return -EINVAL;

71. if(0 == length) return -EINVAL;

72.

73. switch(ptdev->channel)

74. {

75. case 0:

76. {

77. fsp_err_t err = g_uart0.p_api->write(g_

uart0.p_ctrl, buf, length);

78. assert(FSP_SUCCESS == err);

79. UART0WaitTxCplt();

80. break;

81. }

82. case 1:case 2:

83. case 3:case 4:case 5:

84. case 6:

85. {

86. break;

87. }

88. case 7:

89.

90. case 8:case 9:

91. break;

92. default:break;

93. }

94. return ESUCCESS;

95. }

96. static int UARTDrvRead(struct UartDev *ptdev,

unsigned char *buf, unsigned int length)

97. {

98. if(NULL == ptdev) return -EINVAL;

99. if(NULL == buf) return -EINVAL;

100. if(0 == length) return -EINVAL;

101.

102. switch(ptdev->channel)

103. {

104. case 0:

105. {

106. fsp_err_t err = g_uart0.p_api->read(g_

uart0.p_ctrl, buf, length);

107. assert(FSP_SUCCESS == err);

108. UART0WaitRxCplt();

109. break;

110. }

111. case 1:case 2:

112. case 3:case 4:case 5:

113. case 6:

114. {

115. break;

116. }

117. case 7:

118.

119. case 8:case 9:

120. break;

121. default:break;

122. }

123.

124. return (int)length;

125. }

126.

127. void sau_uart_callback(uart_callback_args_

t * p_args)

128. {

129. switch(p_args->event)

130. {

131. case UART_EVENT_RX_COMPLETE:

132. {

133. gUart0RxCplt = true;

134. break;

135. }

136. case UART_EVENT_TX_COMPLETE:

137. {

138. gUart0TxCplt = true;

139. break;

140. }

141. case UART_EVENT_RX_CHAR:

142. {

143. break;

144. }

145. case UART_EVENT_ERR_PARITY:case

UART_EVENT_ERR_FRAMING:

146. case UART_EVENT_ERR_OVERFLOW:case

UART_EVENT_BREAK_DETECT:

147. case UART_EVENT_TX_DATA_EMPTY:

148. break;

149. default:break;

150. }

151. }

152.

153. static void UART0WaitTxCplt(void)

154. {

155. while(!gUart0TxCplt);

156. gUart0TxCplt = false;

157. }

158.

159. static void UART0WaitRxCplt(void)

160. {

161. while(!gUart0RxCplt);

162. gUart0RxCplt = false;

163. }

这里我们需要修改的地方就是对源码修改UART0的自几回调函数以及

view plaincopy to clipboardprint?

1. switch(ptdev->channel)

drv_uart.h

view plaincopy to clipboardprint?

1. /*

2. * drv_uart.h

3. *

4. * Created on: 2023 年4 月13 日

5. * Author: slhuan

6. */

7. #ifndef __DRV_UART_H

8. #defi ne __DRV_UART_H

9.

10. #define UART_DEVICE_NAME_MAX_

LENGTH (16)

11. #def ine UART_TOTAL_CHANNELS

(10)

12. #define UART_RECEIVE_BUFFER_SIZE

(1024)

13.

14. void UartDevicesCreate(void);

15.

16. #endif /* __DRV_UART_H */

到此为止,我们的驱动就移植完毕了。

测试代码:

image.png

实验效果,编译下载程序到开发板后,开机打印出初始化的LOG

1732196925546326.png

3 总结

我们实现了面向对象的UART 的移植,从RA6M5的工程中移植过来,只需要修改少量的代码就可以实现面向对象的移植。

(本文来源于《EEPW》202411)

关键词: 202411 瑞萨 RA0 单片机 UART驱动

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版
阿昔洛韦片是什么药 什么叫做凤凰男 五十岁是什么之年 秦始皇是什么民族 哪吒是一个什么样的人
臭屁什么意思 谷草转氨酶偏高是什么原因 茄子能治什么病 月经量少吃什么 鹅蛋炒什么好吃
尿道口有灼热感是什么原因 大v什么意思 抓拍是什么意思 r值是什么意思 收口是什么意思
气血不足挂什么科 吃什么能生精和提高精子质量 多囊不能吃什么食物 乙肝245阳性是什么意思 什么情况下才做冠脉cta
什么情况下要打破伤风针hcv7jop5ns3r.cn 取鱼刺挂什么科室hcv8jop4ns3r.cn 元老是什么意思hcv9jop7ns3r.cn 多春鱼为什么全是籽hcv9jop4ns2r.cn 拉姆藏语什么意思hcv7jop6ns5r.cn
松花粉是什么hcv8jop6ns5r.cn 半熟芝士是什么意思hcv7jop6ns2r.cn 肺气肿吃什么食物好hcv9jop0ns4r.cn 青春期什么时候结束hcv8jop2ns8r.cn 华为什么手机好wuhaiwuya.com
紫微星是什么意思hcv8jop1ns2r.cn 腹部b超能检查出什么mmeoe.com 6月25日是世界什么日hcv8jop6ns7r.cn 7月1日是什么星座hcv8jop1ns9r.cn 奔头是什么意思hcv9jop1ns0r.cn
今天农历什么日子hcv7jop4ns5r.cn 疏通血管吃什么药最好weuuu.com 施教区是什么意思hcv7jop6ns4r.cn 刘备和刘邦什么关系hcv9jop3ns8r.cn 感冒吃什么饭菜比较好hcv7jop5ns0r.cn
百度