2393|5

484

帖子

12

TA的资源

纯净的硅(高级)

楼主
 

基于固件的MSP430程序样式,更深入的讨论待后! [复制链接]

基于固件的开发模式已经在ARM Cortex的应用得到广泛应用,那MSP430是否
也可以采用这种方法呢,回答是肯定的,下面是TI提供的基于固件库的例程代码段。


//******************************************************************************
//!  Software Port Interrupt Service on P1.4 from LPM4 with
//!                    Internal Pull-up Resistance Enabled
//!
//!  A hi "TO" low transition on P1.4 will trigger P1_ISR which,
//!  toggles P1.0. P1.4 is internally enabled to pull-up. Normal mode is
//!  LPM4 ~ 0.1uA. LPM4 current can be measured with the LED removed, all
//!  unused Px.x configured as output or inputs pulled high or low.
//!  ACLK = n/a, MCLK = SMCLK = default DCO
//!
//!               MSP430F5438A
//!            -----------------
//!        /|\|              XIN|-
//!         | |                 |
//!         --|RST          XOUT|-
//!     /|\   |                 |
//!      --o--|P1.4         P1.0|-->LED
//!     \|/
//!
//! This example uses the following peripherals and I/O signals.  You must
//! review these and change as needed for your own board:
//! - GPIO Port peripheral
//!
//! This example uses the following interrupt handlers.  To use this example
//! in your own application you must add these interrupt handlers to your
//! vector table.
//! - PORT1_VECTOR
//!
//******************************************************************************
#include "inc/hw_memmap.h"
#include "gpio.h"
#include "wdt_a.h"
#include "gpio.h"

void main (void)
{
    //Stop watchdog timer
    WDT_A_hold(WDT_A_BASE);

    //Set P1.0 to output direction
    GPIO_setAsOutputPin(
        GPIO_PORT_P1,
        GPIO_PIN0
        );

    //Enable P1.4 internal resistance as pull-Up resistance
    GPIO_setAsInputPinWithPullUpresistor(
        GPIO_PORT_P1,
        GPIO_PIN4
        );
               
        //P1.4 IFG cleared
    GPIO_clearInterruptFlag(
        GPIO_PORT_P1,
        GPIO_PIN4
        );

    //P1.4 interrupt enabled
    GPIO_enableInterrupt(
        GPIO_PORT_P1,
        GPIO_PIN4
        );

    //P1.4 Hi/Lo edge
    GPIO_interruptEdgeSelect(
        GPIO_PORT_P1,
        GPIO_PIN4,
        GPIO_HIGH_TO_LOW_TRANSITION
        );

    //Enter LPM4 w/interrupt
    __bis_SR_register(LPM4_bits + GIE);

    //For debugger
    __no_operation();
}

//******************************************************************************
//
//This is the PORT1_VECTOR interrupt vector service routine
//
//******************************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
    //P1.0 = toggle
    GPIO_toggleOutputOnPin(
        GPIO_PORT_P1,
        GPIO_PIN0
        );

    //P1.4 IFG cleared
    GPIO_clearInterruptFlag(
        GPIO_PORT_P1,
        GPIO_PIN4
        );
}

最新回复

开发环境有没有智能提示?  详情 回复 发表于 2014-1-7 22:39
 
点赞 关注

回复
举报

5014

帖子

12

TA的资源

裸片初长成(初级)

沙发
 
其实TI在CCS里面的Grace,图形化配置里面已经有了这种思想。
只是430跨的系列太大,一下子很难统一。
 
个人签名《MCU工程师炼成记》作者之一
 

回复

5272

帖子

5

TA的资源

裸片初长成(中级)

板凳
 
对于低端的MCU是否多耗资源?

点评

只有5xxx/6xxx采用固件库,从上述程序段来看,大家不觉得比原来基于寄存器 的编程模式,是不是简单多了,至于是否占用更多的资源,这取决于TI的编译器 应该不会太多,不过,开发效率是手工基于寄存器无法比拟的。  详情 回复 发表于 2014-1-7 22:15
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

484

帖子

12

TA的资源

纯净的硅(高级)

4
 

解读

本帖最后由 平湖秋月 于 2014-1-7 22:23 编辑
wangfuchong 发表于 2014-1-7 16:35
对于低端的MCU是否多耗资源?

只有5xxx/6xxx才有固件库,从上述程序段来看,大家不觉得比原来基于寄存器
的编程模式,是不是简单多了,仅从函数的字面上的含义,就可以轻松对一些功能进行设置,
根本不需要了解这些寄存器到底是个啥“歪因”。至于是否占用更多的资源,这取决于TI的编译器
应该不会太多,不过,开发效率是手工基于寄存器无法比拟的。
所以,我认为基于固件的开发模式取代过时的方法只是时间问题,关键是要人去做
才行!!!

 
 
 

回复

484

帖子

12

TA的资源

纯净的硅(高级)

5
 

解读

本帖最后由 平湖秋月 于 2014-1-7 22:18 编辑

那400多个固件库函数就够大家喝一壶的。
 
 
 

回复

5272

帖子

5

TA的资源

裸片初长成(中级)

6
 
开发环境有没有智能提示?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
ADI &文晔 探索季第一站,邀您在活动帖跟帖,ADI资深工程师将与您一道寻求解决之道! ...
春晚,最出圈当属穿着棉马甲跳秧歌的机器人”秧Bot”。
转手绢、飞手绢、变换队形,精准度和稳定性甚至超越人类,这背后少不了电机控制技术。

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

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

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