历史上的今天
今天是:2025年08月17日(星期日)
2020年08月17日 | 基于MSP430系列单片机的常用程序编写总结
2020-08-17 来源:elecfans
前一段时间一直在用TI公司的MSP430系列的单片机,总结了点430常用的程序框架。

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...
}
更改显示;
}
}
史海拾趣
|
各位感兴趣的进来后,可别以为我已经是什么高手了,那说明我的题目把大家误导了,其实我是想写一个学习实时操作系统uc/os ii的日记,记下我的学习之路,当然这其中包含我的错误理解。以前看到的精辟文章都是各位在取得了小成,有了一定的心得,并经 ...… 查看全部问答> |
|
CE60下调试RIL怎么算是调试成功了?用什么标准来衡量?TAPI/SIM/SMS的那些API可以正常使用算不算? CE60下调试RIL怎么算是调试成功了?用什么标准来衡量?TAPI/SIM/SMS的那些API可以正常使用算不算?… 查看全部问答> |
|
11月23日下午阿牛哥去北京市王府井励骏酒店参加INTEL 凌动处理器系统芯片应用论坛。INTEL开放接口,无限应用的主题讲演,阿牛哥听到了也看到了INTEL 的凌动E600。这是论坛阿牛哥着重听了INTEL 凌动处理器在汽车电子和安防 ...… 查看全部问答> |
|
请问现在像stm32这类的MCU是不是都有官方的库函数提供啊? 这半年来我一直在学习stm32,开始的时候查了很多关于它的资料,最后自己还是觉得看它的user\'s guider,直接操作寄存器这样比较细致的学习,但通过一段时间的努力特别是想自己配置它的时钟,定时器,觉得很吃力,所以最近转向使用它的库函数,但自己 ...… 查看全部问答> |
|
【玩转ADuCM360】 自己做的ADuCM360 ADC初始化程序-----芯片由VOCO_2000网友提供 测量电压已基本正常,ADC可以正常工作了,连续模式。 1、将ADI的ADUCM360的头文件中,凡是加了“ADI_”的,都去掉了。觉得烦人, 2、原来使用ADI提供的函数,觉得不明了,调用需要一至两层,需要压栈什么的。所以就直接使用它定义的结构体了,简 ...… 查看全部问答> |




