zoukankan      html  css  js  c++  java
  • MSP430单片机常用程序框架

      前一段时间一直在用TI公司的MSP430系列的单片机,总结了点430常用的程序框架。

    a.循环低功耗、中断服务程序唤醒

    void main()

    {

      关闭开门狗;

      初始化时钟;

      初始化端口;

      初始化屏幕;

      其他外围必要的初始化;

      开中断;

      while(1)

      {

        进入低功耗模式;

        执行某函数;

      }

    }

    中断函数1

    {

      退出低功耗;

      中断服务程序;

    }

    例如:

    View Code
     1 #pragma vector=ADC12_VECTOR
     2 __interrupt void ADC12ISR (void)  //AD转换中断服务程序
     3 {
     4   static unsigned char index = 0;
     5   LPM3_EXIT;
     6   switch(__even_in_range(ADC12IV,34))
     7   {
     8   case  0: break;                           // Vector  0:  No interrupt
     9   case  2: break;                           // Vector  2:  ADC overflow
    10   case  4: break;                           // Vector  4:  ADC timing overflow
    11   case  6:                                  // Vector  6:  ADC12IFG0
    12     if(index < 8)
    13     {
    14       results[index] = (ADC12MEM0*2.048/4096);
    15       index++;
    16     }
    17     if(8==index) { index=0; }
    18     S_judge=1;
    19     break;
    20   default: break;
    21   }
    22 }
    23 
    24 void main()
    25 
    26 {
    27 
    28   WDTCTL = WDTPW + WDTHOLD;
    29   Init_CLK()  ;
    30   LCD_Init()  ;
    31   Clear_LCD(Color_BK);
    32   Init_Port() ;
    33   Init_RTC();
    34 
    35   _EINT();  //开全局中断
    36 
    37   Init_ADC();
    38   ADC12CTL0 |= ADC12SC;  //开始AD转换
    39   while(1)
    40   {
    41        LPM3;
    42        Show_Clock();
    43     if(S_judge==1)
    44     {
    45         for(int n=0;n<Num_of_Results;n++)
    46         {
    47           fsum+=fresults[n];
    48       }
    49        m=fsum/Num_of_Results;
    50         sprintf(str,"%02.1f",m);
    51         PutStringEN24(104,260,str);
    52         fsum=0;
    53         S_judge=0;
    54         ADC12CTL0 |= ADC12SC;
    55 
    56  }
    57 }

    b.低功耗、中断服务程序

      该种结构比较简单,与第一种结构的差别在于主程序没有循环执行某函数。

    void main()

    {

      关闭开门狗;

      初始化时钟;

      初始化端口;

      初始化屏幕;

      其他外围必要的初始化;

      开全局中断;

      进入低功耗;

    }

    中断服务程序1

    {

      退出低功耗;

      中断服务程序;

    }

    c.开机设定、低功耗、中断服务程序

    void main()

    {

      关闭开门狗;

      初始化时钟;

      初始化端口;

      初始化屏幕、键盘;

      初始化其他外围;

      开全局中断;

      键盘设定数据,开机初始化;

      键入低功耗;

    }


    中断服务程序1

    {

      退出低功耗;

      中断服务程序;

    }

    比如在第一种模式里加入开机设定的部分。

    d.菜单按键方式

    void main()

    {

      关闭开门狗;

      初始化时钟;

      初始化端口;

      初始化屏幕、键盘;

      初始化其他外围;

      开全局中断;

      while(1)

      {

        扫描按键;

        switch(键值)

        {

          case...

        }

        更改显示;

      }

    } 

  • 相关阅读:
    特殊方法(双下方法)
    反射
    属性
    类方法、静态方法
    封装
    python接口类,抽象类
    Yii2基本概念之——事件(Event)
    Yii2基本概念之——行为(Behavior)
    yii2 migrate 数据库迁移的简单分享
    Yii2.0 RESTful API 之速率限制
  • 原文地址:https://www.cnblogs.com/fanyabo/p/2551850.html
Copyright © 2011-2022 走看看