【经验】瑞萨RL78 MCU芯片工程代码使用指引之对单片机IO口进行位操作
瑞萨科技是世界十大半导体芯片供应商之一,在汽车领域的MCU市场份额更是排在最前列。近日笔者碰到刚接手瑞萨MCU的开发人员,提出一个比较有意思的问题,分享出来以帮助大家更快上手。
我们使用的是瑞萨R5F109GE的开发板,通过开发板来熟悉瑞萨的MCU资源是比较好的办法。这位朋友提出的问题是:R5F109GE使用瑞萨自有的CS+的编译器,但在编程中,无法对单片机IO口进行位操作。比如说做跑马灯实验,需要不断的改变某个IO口的输出信号,而编译器只识别整个IO口寄存器,而无法识别对其中的位操作,这样不利于编程开发。
以其中的IO口P51为例,正常我们希望的是编译器可以识别以下代码,方便理解:
P5.1=1;//P51口输出高电平
或P51=1;//P51口输出高电平
不过实际上,编译器是无法识别P5.1和P51。我们以前碰到这样的情况,可能需要自己来做下数据处理如下所示:
P5= P5|(1<<1);// P51口输出高电平
这样才能达到我们所要的P51口输出高电平效果。但是,这么长的赋值语句,如果在一个本身就比较长的代码中,很容易引起操作失误。
笔者仔细研究了下瑞萨的CS+ 的编译器,在编译器创建工程默认后的iodefine.h文件中,找到了瑞萨为我们提供的一个更好的解决办法。
如下代码所示:
typedef struct
{
unsigned char no0:1;
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1;
} __bitf_T;
#define P5 (*(volatile __near unsigned char *)0xFF05)
#define P5_bit (*(volatile __near __bitf_T *)0xFF05)
在上面的代码中,CS+编译器的iodefine.h文件中定义了一个8bit的结构体__bitf_T(如果是16位,或者32位只需要往上叠加no个数即可),并定义了P5整个寄存器的地址,以及P5_bit这个__bitf_T型的结构体的地址,都指向PORT5的寄存器地址。此时,我们可以通过以下的简单操作即可实现PORT口的位操作。
P5_bit.no1=1;
编译器会创建P5_bit这个__bitf_T型的结构体,以方便我们调用。如果P51使用的比较频繁,觉得代码还比较长,我们可以在宏定义中添加:
#define P51 P5_bit.no1
这样就可以实现我们一开始所需求的代码:
P51=1; / P51口输出高电平
最后给大家整理下,据说高级工程师都会选择以下的写法:
#define P51 (((volatile __near __bitf_T *)0xFF05)->no1)
P51=1; / P51口输出高电平
程序的优劣性下一个章节会和大家一起具体分析下。
瑞萨的CS+编译器完全支持瑞萨汽车级16位MCU RL78系列和RH850系列汽车级32位MCU,支持代码生成器功能,内置乘除法调用精简指令。支持瑞萨E1等多个烧录调试工具。
- |
- +1 赞 0
- 收藏
- 评论 1
本文由木木提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】瑞萨32位RH850系列MCU的调试下载指引
瑞萨车规级32位RH850系列MCU ,满足ISO26262 ASILA-ASILD各等级的功能安全需求,系统时钟达80M以上,支持浮点运算,多通道CAN通信等功能
【经验】一文让你了解DSP与MCU区别
世强代理有Silicon Labs EFM8/EFM32系列8位MCU/32位MCU,Renesas 汽车级MCU RL78 系列,RH850、V850系列,工业级MCU RX系列等。世强有代理进芯电子32位浮点DSP,32位定点DSP,16位DSP,国内唯一可批量供货的32位工业控制DSP供应商。
【经验】瑞萨32位MCU RH850 CS+环境设置的几个重要问题
本文以入门阶段遇到的问题为重点,讲解了瑞萨32位MCU RH850在CS+环境下新建一个完整的工程到顺利调试需要注意的几个设置。
【产品】8位、16位、32位MCU究竟该如何选择?
本文介绍8位、16位、32位MCU的差异特性。
【应用】工作电压范围为2.0-5.5V的32位MCU BAT32A239用于汽车电子腰托,最高工作频率64MHz
BAT32A239系列符合AEC-Q100汽车产品认证,-40~125℃工作范围;支持多种封装,为不同尺寸的汽车电子腰托提供可能性。此外,支持多种休眠模式,低功耗,能够有效帮助产品整体低功耗,延长产品使用寿命,高可靠性和多外设,提升腰托产品整体的高可靠性。
极海半导体车规级32位MCU通过安全管理体系认证,符合汽车功能安全最高级别开发体系,亮相全球汽车电子交流会
2022年11月7-8日,“2022张江汽车半导体生态峰会暨全球汽车电子交流会”在上海张江科学会堂隆重举行。会议六大亮点之一的“全球汽车电子博览会”,展览范围包罗了整车、汽车零部件、汽车半导体等上下游各个细分领域。极海携多款车规级MCU产品亮相博览会。
【经验】使用瑞萨CS+编译器查看RL78内部FLASH数据经验与方法介绍
瑞萨Renesas汽车级16位MCU RL78/F1x系列支持AEC-Q100认证,nA级别优异的低功耗特性,以及集成片上EEPROM等特性,集成CAN/LIN通讯模块,十分适用于汽车电子控制MCU的应用。瑞萨针对RL78系列芯片提供自主研发的CS+编译器来实现芯片编程与仿真。
【技术】RH850系列32位MCU三种中断功能,你知道么?
瑞萨电子RH850系列32位MCU符合ISO26262的要求,满足汽车安全等级ASILB –ASILD等级的控制芯片,在全球汽车电子市场上得到广泛应用。
【应用】瑞萨32位车规级MCU R7F7016493助力车载T-BOX设计,主频高达240MHz,支持大代码运行
在车载T-box中,主控芯片的选择是非常重要的一环,汽车电子常用的MCU需要高安全性,高性能,低功耗,处理相关数据并提供外设控制控制功能,本文介绍一款瑞萨的32位车规级MCU R7F7016493的应用优势。
【经验】瑞萨RL78系列MCU中断嵌套开发经验
瑞萨高性价比汽车级16位MCU RL78/F1x系列,支持CAN总线与LIN总线,可用于汽车零部件主控BCM开发,受到车厂的公认好评。本文主要介绍瑞萨RL78/F13系列MCU R5F10BGGCLFB的中断嵌套模式配置方法。
【经验】瑞萨RL78系列MCU芯片R5F10BBF的DTC模块配置方法
瑞萨(Renesas)推出的高性价比汽车级16位MCU RL78/F1x系列。RL78系列是瑞萨78K系列的升级产品,主频可以达到32MHz,集成了片上EEPROM。本文主要介绍瑞萨RL78/F13系列MCU R5F10BBF的DTC模块配置方法。
【经验】32位车规级MCU RH850 F1L出现异常的调试及启动配置说明
Renesas RH850 F1L作为32位车规级MCU受到许多车厂及Tier1喜欢,近期有Tier1客户在使用该MCU过程中出现无法正常启动的情况,并且是切换到铜线时才出现,感觉非常奇怪,本文就该MCU启动问题排查过程做如下介绍。
【应用】瑞萨32位MCU RH850/F1K系列在高集成度的iBCM中应用
瑞萨汽车级MCU R7F7015573作为瑞萨32位芯片RH850/F1K,采用瑞萨G3KH核,集成功能安全模块ICUS(SHE功能安全),可以支持汽车功能安全等级ASIL B,176PIN多引脚,丰富的CAN总线资源,支持浮点运算,适用于汽车高集成化的iBCM控制模块
【经验】瑞萨RL78系列汽车级16位MCU低功耗STOP模式如何唤醒?
本文以瑞萨汽车级16位MCU RL78系列,32PIN QFN小封装,96KB FLASH的车规级16位单片机 R5F10BBF为例,介绍如何配置和唤醒R5F10BBF芯片的低功耗STOP模式。
【经验】瑞萨汽车级16位MCU RL78/F13内部集成temperature sensor的配置方法
瑞萨(Renesas)推出的高性价比汽车级16位MCU RL78/F1x系列,支持CAN总线与LIN总线,可用于汽车零部件主控BCM开发。本文主要介绍瑞萨RL78/F14系列内部集成的temperature sensor的配置方法。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可定制显示屏的尺寸范围0.96“~15.6”;工作温度范围:-30℃~80℃,分辨率:128*128~1920*1080;亮度:300~1200。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论