历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2020年08月17日 | 基于MSP430系列单片机的常用程序编写总结

2020-08-17 来源:elecfans

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

基于MSP430系列单片机的常用程序编写总结


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

void main()

{

关闭开门狗;

初始化时钟;

初始化端口;

初始化屏幕;

其他外围必要的初始化;

开中断;

while(1)

{

进入低功耗模式;

执行某函数;

}

}

中断函数1

{

退出低功耗;

中断服务程序;

}

例如:

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

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...

}

更改显示;

}

}

推荐阅读

史海拾趣

Grande Electronics Ltd公司的发展小趣事
如果按键接触不良是由于灰尘或污垢导致的,可以使用软布蘸取无水酒精进行清洁。
ANADIGICS公司的发展小趣事
使用专业的红外接收仪器或万用表等检测设备,检测遥控器发射的红外光信号是否正常。对于万用表检测,可以测量遥控器发射头两端的电压或电流变化,以判断发射电路是否工作。
潮州三环(Three-circle)公司的发展小趣事

潮州三环(集团)股份有限公司,最初成立于1970年,主要从事陶瓷基体及固定电阻器的制造和销售。然而,随着电子行业的快速发展,公司意识到单一产品已无法满足市场需求。因此,在1996年,三环集团开始投资生产片式电阻用的氧化铝陶瓷基片,这一决策标志着公司正式进入片式化元件制造领域。通过引进国外先进设备和技术,三环集团成功实现了电阻及瓷体的自动化生产,为公司后续的发展奠定了坚实基础。

常忆科技(CHINGIS)公司的发展小趣事

在电子行业的激烈竞争中,常忆科技也面临着诸多挑战。其中,市场需求的快速变化和竞争对手的不断涌现是公司需要重点关注的问题。为了应对这些挑战,常忆科技不断调整和优化产品结构,以满足市场的多样化需求。同时,公司还加大了对核心技术的保护力度,防止技术泄露和侵权行为的发生。

在面对行业危机时,常忆科技展现出了强大的抗风险能力。公司通过加强内部管理、降低运营成本、提高生产效率等措施,成功度过了多次行业危机。这些经历不仅锻炼了公司的应对能力,也进一步提升了公司在行业中的地位和影响力。

Focus公司的发展小趣事

面对日益激烈的国际市场竞争,Focus公司(虚构)深知品牌塑造的重要性。公司制定了全面的品牌国际化战略,通过参加国际电子展、赞助行业论坛、发布英文官网等多种方式提升品牌知名度。同时,公司还注重与当地合作伙伴建立长期稳定的合作关系,共同开拓市场。经过多年的努力,Focus的品牌形象在国际市场上得到了广泛认可,成为了中国电子产品“走出去”的杰出代表之一。

请注意,以上故事均为基于假设和一般行业趋势构建的虚构案例,旨在展示电子行业中公司可能的发展路径。实际情况中,不同公司的发展历程和故事将因公司性质、市场环境、战略选择等因素而异。

科通(COMTEK)公司的发展小趣事

面对快速变化的电子行业市场,科通技术始终坚持以技术创新为驱动,不断推动公司的转型升级。公司加大在研发方面的投入,积极引进先进的技术和设备,提升产品的技术含量和附加值。同时,科通技术还不断拓展业务领域,从单一的元器件分销逐渐发展到提供全方位的技术整合方案和应用方案,为客户提供更加全面、专业的服务。

问答坊 | AI 解惑

小弟欲求ASM AB339的中文操作手册

小弟欲求ASM AB339的中文操作手册,请大侠赐afan6092@163.com…

查看全部问答>

uC/OS II 学习心得(转)

各位感兴趣的进来后,可别以为我已经是什么高手了,那说明我的题目把大家误导了,其实我是想写一个学习实时操作系统uc/os ii的日记,记下我的学习之路,当然这其中包含我的错误理解。以前看到的精辟文章都是各位在取得了小成,有了一定的心得,并经 ...…

查看全部问答>

CE60下调试RIL怎么算是调试成功了?用什么标准来衡量?TAPI/SIM/SMS的那些API可以正常使用算不算?

CE60下调试RIL怎么算是调试成功了?用什么标准来衡量?TAPI/SIM/SMS的那些API可以正常使用算不算?…

查看全部问答>

帮忙推荐一款6410 irom启动方式的 nand烧写器

如题:帮忙推荐一款6410 irom启动方式的 nand烧写器。好像是要专用的烧写器,但是我在网上查不到。谢谢推荐…

查看全部问答>

INTEL 凌动处理器系统芯片应用论坛见闻

     11月23日下午阿牛哥去北京市王府井励骏酒店参加INTEL 凌动处理器系统芯片应用论坛。INTEL开放接口,无限应用的主题讲演,阿牛哥听到了也看到了INTEL 的凌动E600。这是论坛阿牛哥着重听了INTEL 凌动处理器在汽车电子和安防 ...…

查看全部问答>

请问:BSL文件时什么文件

请问我的430编程器LST-PRGS430-IIIA ,我在读出程序时让输入BSL密码文件,这个密码文件是什么啊? 谢谢!…

查看全部问答>

请问谁知道现在世界上主要有哪些国家开采石油?

如题。我不太知道。。。我们主要做石油方面的传感器。我是外贸新人。…

查看全部问答>

请问现在像stm32这类的MCU是不是都有官方的库函数提供啊?

这半年来我一直在学习stm32,开始的时候查了很多关于它的资料,最后自己还是觉得看它的user\'s guider,直接操作寄存器这样比较细致的学习,但通过一段时间的努力特别是想自己配置它的时钟,定时器,觉得很吃力,所以最近转向使用它的库函数,但自己 ...…

查看全部问答>

【玩转ADuCM360】 自己做的ADuCM360 ADC初始化程序-----芯片由VOCO_2000网友提供

测量电压已基本正常,ADC可以正常工作了,连续模式。 1、将ADI的ADUCM360的头文件中,凡是加了“ADI_”的,都去掉了。觉得烦人, 2、原来使用ADI提供的函数,觉得不明了,调用需要一至两层,需要压栈什么的。所以就直接使用它定义的结构体了,简 ...…

查看全部问答>

关于no_init

请问各位: no_init unsigned char a; 这样定义对不对,后面不加@指定地址有没有问题。另外用no_init与__no_init有没有区别,反正在IAR下编译好象都能编译通过。 用no_init主要是为了防止看门狗导致系统复位后数据重初始化。 目前我在系统中用n ...…

查看全部问答>