4367|2

2

帖子

1

TA的资源

一粒金砂(初级)

楼主
 

关于函数库编程与直接寄存器访问编程的区别 [复制链接]

我发现ti的2802x在controlsuite里边提供了两种外设编程方式,第一种是基于外设驱动库函数,第二种是直接的通过结构体和位域访问寄存器。
外设驱动库:
// Setup TBCLK
    PWM_setCounterMode(myPwm1, PWM_CounterMode_UpDown);     // Count up and down
    PWM_disableCounterLoad(myPwm1);                         // Disable phase loading
    PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_1);     // Clock ratio to SYSCLKOUT
    PWM_setClkDiv(myPwm1, PWM_ClkDiv_by_1);

    PWM_setShadowMode_CmpA(myPwm1, PWM_ShadowMode_Shadow);  // Load registers every ZERO
    PWM_setLoadMode_CmpA(myPwm1, PWM_LoadMode_Zero);
直接寄存器访问:
        EPwm1Regs.TBPRD = 60000;                                 // PWM1 Fry = 1000HZ
        EPwm1Regs.TBPHS.half.TBPHS = 0x0000;         //Phase is 0
        EPwm1Regs.TBCTR = 30000;                                  // initial duty = 50%

        // Setup TBCLK
        EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
        EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;
        EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
        EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

我最早是采用第一种编程方式,非常方便。近期发现c2000的其他芯片都没有提供外设驱动库,考虑到以后很可能在系统升级的时候用到c2000的其他芯片,所以改用第二种方式以尽快适应。
不知道你是用哪一种方式?这两种方式的优缺点是什么?

最新回复

TI最早提供的是使用寄存器直接操作的方法。后来才使用库函数的方法。 两种各有特点吧。根据自己的情况决定。 我一直使用直接操作寄存器的办法 ----- 不管是TI的,还是别的公司的MCU。因为我要掌握一款MCU,首先是看它的数据手册,这样就对寄存器比较熟悉了,使用起来非常方便。 如果使用库的办法 ,还要慢慢看看库的编写特点,以及每个函数对应修改了啊些寄存器……, 这样下来,工作量反而大了。  详情 回复 发表于 2015-2-8 19:47
 
点赞 关注

回复
举报

1131

帖子

24

TA的资源

纯净的硅(高级)

沙发
 
看寄存器的方便程度,有些MCU官方的文件适合寄存器操作,比如像NXP的MCU,有些不适合,用库方便点,
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

板凳
 
TI最早提供的是使用寄存器直接操作的方法。后来才使用库函数的方法。

两种各有特点吧。根据自己的情况决定。

我一直使用直接操作寄存器的办法 ----- 不管是TI的,还是别的公司的MCU。因为我要掌握一款MCU,首先是看它的数据手册,这样就对寄存器比较熟悉了,使用起来非常方便。

如果使用库的办法 ,还要慢慢看看库的编写特点,以及每个函数对应修改了啊些寄存器……, 这样下来,工作量反而大了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表