历史上的今天
返回首页

历史上的今天

今天是:2025年06月30日(星期一)

正在发生

2020年06月30日 | MSP430F5438学习笔记 TA1溢出中断加比较匹配中断

2020-06-30 来源:eefocus

  1. // 时钟默认情况

  2. // FLL时钟      FLL选择 XT1

  3. // 辅助时钟     ACLK选择 XT1          32768Hz

  4. // 主系统时钟   MCLK选择 DCOCLKDIV    8000000Hz

  5. // 子系统时钟   SMCLK选择 DCOCLKDIV   8000000Hz

  6. // TA1选择ACLK,最大计数值为65535

  7. // 比较匹配值为 32768

  8. // 在TIMER1_A0_VECTOR中 CCR0中断 P4.0 = 0

  9. // 在TIMER1_A1_VECTOR中 OVF中断  P4.0 = 1

  10. // 实际效果 P4.0 1s为高电平,1s为低电平,交替进行

  11. #include

  12. #include

  13. void clock_config(void);

  14. void select_xt1(void);

  15. void dco_config(void);

  16. int main(void)

  17. {

  18. clock_config();                             // 初始化时钟

  19. P4DIR |= BIT0;                              // P4.0输出

  20. TA1CCTL0 = CCIE;                            // 使能TA1CCR0,比较匹配中断

  21. TA1CCR0 = 16384;                            // 初始化比较匹配值

  22. TA1CTL = TASSEL_1 + MC_2 + TACLR + TAIE;    // 选择ACLK,最大值为65535,清除计数值

  23. _EINT();                                    // 初始化全局中断

  24. while(1)

  25. {

  26. ;

  27. }

  28. }

  29. void clock_config(void)

  30. {

  31. WDTCTL = WDTPW + WDTHOLD;                   // 停止看门狗

  32. select_xt1();                               // 选择XT1

  33. dco_config();                               // ACLK = XT1 = 32.768K

  34. // MCLK = SMCLK = 8000K

  35. }

  36. void select_xt1(void)

  37. {

  38. // 启动XT1

  39. P7SEL |= 0x03;                              // P7.0 P7.1 外设功能

  40. UCSCTL6 &= ~(XT1OFF);                       // XT1打开

  41. UCSCTL6 |= XCAP_3;                          // 内部电容

  42. do

  43. {

  44. UCSCTL7 &= ~XT1LFOFFG;                  // 清楚XT1错误标记

  45. }while (UCSCTL7&XT1LFOFFG);                 // 检测XT1错误标记

  46. }

  47. void dco_config(void)

  48. {

  49. __bis_SR_register(SCG0);                    // 禁止FLL功能

  50. UCSCTL0 = 0x0000;                           // Set lowest possible DCOx, MODx

  51. UCSCTL1 = DCORSEL_5;                        // DCO最大频率为16MHz

  52. UCSCTL2 = FLLD_1 + 243;                     // 设置DCO频率为8MHz

  53. // MCLK = SMCLK= Fdcoclkdiv = (N+1)X(Ffllrefclk/n)

  54. // N为唯一需要计算的值

  55. // Ffllrefclk FLL参考时钟,默认为XT1

  56. // n取默认值,此时为1

  57. // (243 + 1) * 32768 = 8MHz

  58. __bic_SR_register(SCG0);                    // 使能FLL功能

  59. // 必要延时

  60. __delay_cycles(250000);

  61. // 清楚错误标志位

  62. do

  63. {

  64. UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);

  65. // 清除所有振荡器错误标志位

  66. SFRIFG1 &= ~OFIFG;                      // 清除振荡器错误

  67. }while (SFRIFG1&OFIFG);                     // 等待清楚完成

  68. }

  69. #pragma vector=TIMER1_A0_VECTOR

  70. __interrupt void TIMER1_A0_ISR(void)

  71. {

  72. P4OUT &= ~BIT0;

  73. }

  74. #pragma vector=TIMER1_A1_VECTOR

  75. __interrupt void TIMER1_A1_ISR(void)

  76. {

  77. switch(__even_in_range(TA1IV,14))

  78. {

  79. case  0: break;                          // No interrupt

  80. case  2: break;                          // CCR1中断

  81. case  4: break;                          // CCR2中断

  82. case  6: break;                          // reserved

  83. case  8: break;                          // reserved

  84. case 10: break;                          // reserved

  85. case 12: break;                          // reserved

  86. case 14:                                 // 溢出中断

  87. P4OUT |= BIT0;

  88. break;

  89. default: break;

  90. }

  91. }


推荐阅读

史海拾趣

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业日益增长的定制化需求,Frolyt Condensers & Elements GmbH积极调整策略,提供从设计咨询到产品生产的全方位定制化服务。公司建立了一支专业的技术团队,能够根据客户的具体需求,快速响应并设计出符合要求的电容器产品。这种高度定制化的服务模式赢得了众多客户的信赖和好评,使得Frolyt在竞争激烈的市场中脱颖而出。

Continental Industries公司的发展小趣事

在电子行业的初期,Continental Industries凭借其深厚的技术积累,成功研发出了一款固态继电器。这款继电器以其高度可靠性、长寿命和减少电磁干扰的特性,迅速在市场中占据了重要地位。公司不断投入研发资源,优化产品性能,逐渐在工业自动化和建筑环境控制领域树立起了技术领先的形象。

Exel Microelectronics Inc公司的发展小趣事

随着全球对环保问题的日益关注,Exel Microsystems Inc公司也积极响应,履行环保责任。公司在XXXX年开始实施绿色生产战略,通过采用环保材料、优化生产流程等措施,降低了生产过程中的能耗和废弃物排放。此外,Exel还积极参与环保公益活动,推动行业和社会的可持续发展。这些举措不仅彰显了公司的社会责任感,也为公司赢得了良好的社会声誉。

富瀚(Fullhan)公司的发展小趣事
确保保护器的电源供应正常,无电压波动或断电现象。
Astec [Astec America, Inc]公司的发展小趣事

在发展过程中,Astec意识到单打独斗难以应对日益激烈的市场竞争。因此,公司开始积极寻求与其他企业的战略合作,共同开拓市场。通过与上下游企业的紧密合作,Astec成功整合了产业链资源,实现了从原材料采购到产品生产的全面优化。这不仅提高了公司的生产效率,还降低了成本,进一步增强了公司的市场竞争力。

Electech Electronics公司的发展小趣事

Electech Electronics一直非常重视产品质量和品质管理。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测和包装等各个环节都进行严格把控。此外,公司还不断引进先进的生产设备和技术,提升产品的制造精度和品质。这些举措使得Electech Electronics的产品在市场上享有很高的声誉,赢得了客户的信赖。

问答坊 | AI 解惑

软件看门狗写法?(汇编)

以下是一个用定时/计数器T0作软件看门狗的完整程序: ORG0000H   AJMPMAIN   ORG000BH   LJMPERR  MAIN:MOVSP,#60H  MOVPSW,#00H  MOVSCON,#00H  MOVTMOD,#01H;设置T0为16位定时器 SETBET0 ;允许T0中断 SETBPT0 ;设 ...…

查看全部问答>

09年你们准备好了吗?

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 提供优秀的论文给大家做模板  …

查看全部问答>

从虚拟PC移植程序到真实环境时的路径问题怎么解决?

我在Pocket pc 上运行一个要用到COM的dll文件的客户程序,现在我要把它移植到真实嵌入系统中去。但却不知如何处理DLL的路径问题。我在头文件中写#import \"aa//a.dll\"(我把文件放到工程目录下的aa文件夹下) 我把生成的exe文件和dll都放到嵌入系统 ...…

查看全部问答>

界面动画显示EVC4.0

我想实现类似AnimateWindow函数的功能,但是EVC下貌似不能用AnimateWindow 所以想请教有没有类似的函数,能让界面更美化,动画的,谢谢。…

查看全部问答>

如何开发WINCE5.0 环境下的NDIS网络驱动

主要是如何初始化那个微端口驱动程序,具体操作是什么?我的PC安装了EVC 4SP4和PB 5.0,还需要怎么做才能开发NDIS网络驱动? 这个驱动程序最后是要写入S3C2440开发板上运行的…

查看全部问答>

概念设计奖的婴儿车

这款婴儿散步车,赢得了2010年奖的iF概念设计,我敢肯定,婴儿到处欢呼。该婴儿车调整到不同的高度和座椅位置便利睡觉吃不同的活动。该车轮分布在小地方提供了稳定的更大的机动性,而不会丢失。椅子的基地转180 °,摆弥补了人行道中的曲折路线。我 ...…

查看全部问答>

STM32会淘汰掉单片机吗?

STM32与常用单片机相比,速度和功能都强很多。 STM32系列有一些价格也不是很贵,十多元就有了。以后STM32会把现在常用的单片机淘汰掉吗? 我们公司开发产品一直用AVR单片机,对速度和外设有较高的需求,比如PWM需要4路以上。ATmega16要18元 ...…

查看全部问答>

stm8内部e2数据乱了

                                 你先说说你做了什么。…

查看全部问答>

傅里叶变换

我在时域,你在频域,需要经过傅立叶变换,才能发现你的足迹我将爱的语言调制到星座,通过伪随机序列,载波到你的频率,并波束赋形到你的接收阵列矩阵,你说我的爱噪声太大,经过层层滤波,原来发现,那是在宇宙开始的时候,我发给你的微波背景辐射衍生出来的 ...…

查看全部问答>

ARM开发者必知:ARM公司发展历程 - 从1985年至今

2012ARM,Gemalto 和 G&D 公司组建合资公司,以提供下一代移动安全第一个Windows RT(ARM上Windows)设备发布ARM,AMD, Imagination,MediaTek 和德州仪器(TI)创建异构系统体系结构(HSA)基金会并成为创始成员ARM和TSMC合作开发FinFET器件工艺 ...…

查看全部问答>