打印
[LOOK]

LOOK例程中两种头文件的比对和转换方法

[复制链接]
1867|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2011-7-25 22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tc, NUC, RS, se, RTC
在《最新版LOOK程序包及例程包汇编(2011.7.24)》中,用LOOK_H来区分
两种头文件。
#if LOOK_H == 0
#include "NUC1xx.h"
#include "NUC1xxM051Seriescfg.h"
#else
#include <nuc120re3an.h>
using namespace nuvoton;
#endif

LOOK_H=0时,采用的是新唐官方的NUC1xx.h和菜农的NUC1xxM051Seriescfg.h组合。
LOOK_H=1或2时,采用的是Lee老师的nuc120re3an.h。

最新版LOOK程序包及例程包汇编(2011.7.24)内的Cortex.rar文件内有源码。


举例:

#if LOOK_H == 0
RTCs.RIER.Bits.TIER = 1;
#else
RTC.RIER().TIER = 1;
#endif



可以看出他们之间的转换关系:
1.将"RTCs."改为"RTC.",即去掉"s"
2.将".Bits"改为“()”

在例如:
#if LOOK_H == 0
SYSs.IPRSTC2.Bits.UART0_RST = 1;
SYSs.IPRSTC2.Bits.UART0_RST = 0;
UART0s.FCR.Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);
UART0s.LCR.Regs = 3 << UART_LCR_WLS; // 8bits
UART0s.BAUD.Regs = (0x66 << UART_BAUD_BRD)
| (1 << UART_BAUD_DIV_X_ONE)
| (1 << UART_BAUD_DIV_X_EN); // 115200
#else
SYS.IPRSTC2()
.UART0_RST(1);
SYS.IPRSTC2()
.UART0_RST(0);
UART0.FCR()
.TFR(1)
.RFR(1);
UART0.LCR(0)
.WLS(3); // 8bits
UART0.BAUD(0)
.BRD(0x66)
.DIV_X_ONE(1)
.DIV_X_EN(1); // 115200
#endif


可以看出老师的写法非常好,简洁。
其中:
UART0s.FCR.Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);

的"|="就是置位,只设置FCR寄存器中的两位,其他位不改的。
此时,老师的头文件就显示出了优势:
 UART0.FCR()
.TFR(1)
.RFR(1);


再例如:
UART0s.LCR.Regs = 3 << UART_LCR_WLS;

注意和上例不同,“=”,即赋值或覆盖
此时注意老师的写法!
UART0.LCR(0).WLS(3);

即WLS位域为3,其他全为0.

再例如:
 UART0s.BAUD.Regs = (0x66 << UART_BAUD_BRD)
| (1 << UART_BAUD_DIV_X_ONE)
| (1 << UART_BAUD_DIV_X_EN); // 115200


和上例基本一样,就是多位域操作。
老师的写法为:
 UART0.BAUD(0)
.BRD(0x66)
.DIV_X_ONE(1)
.DIV_X_EN(1);




最后大家看看老师的头文件之精妙在何处:


位域表达:
  RTCs.TLR.Bits.HR10 = Hour / 10;
  RTCs.TLR.Bits.HR1 = Hour % 10;
  RTCs.TLR.Bits.MIN10 = Minute / 10;
  RTCs.TLR.Bits.MIN1 = Minute % 10;
  RTCs.TLR.Bits.SEC10 = Second / 10;
  RTCs.TLR.Bits.SEC1 = Second % 10;



老师用一句的表达方法:
  RTC.TLR(0)
     .HR10(Hour / 10, false)
     .HR1(Hour % 10, false)
     .MIN10(Minute / 10, false)
     .MIN1(Minute % 10, false)
     .SEC10(Second / 10, false)
     .SEC1(Second % 10, false);

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1538

主题

21697

帖子

505

粉丝