概述

  • 使用TA0的比较模式输出方波,驱动LED1.
  • 方波的频率较小时用相机拍摄LED时会发现在闪烁,为了让相机不能发现LED在闪烁,使用25MHz的时钟源。通过DCO-FLL得到。
  • 机械按键会抖动,使用TA1定时扫描按键,消除抖动。
  • 英文注释部分是code example经过修改的
  • 把P1.2引脚用杜邦线连接到JP8(LED1和LED2之间,把跳线取下。)

代码

#include <msp430.h> void SetVcoreUp (unsigned int level);/*** main.c* 使用XT1作为DCO的参考时钟源。*/
int main(void)
{WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer// Increase Vcore setting to level3 to support fsystem=25MHz// NOTE: Change core voltage one level at a time..SetVcoreUp (0x01);SetVcoreUp (0x02);SetVcoreUp (0x03);/*配置FLL选择XT1为参考时钟源*/P5SEL |= BIT4+BIT5;                       // Port select XT1UCSCTL6 &= ~XT1OFF;                //打开 XT1UCSCTL3 |= SELREF__XT1CLK;      // FLL的参考时钟源选择XT1__bis_SR_register(SCG0);                  // Disable the FLL control loopUCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7;                      // Select DCO range 50MHz operationUCSCTL2 = FLLD_0 + 762;                   // Set DCO Multiplier for 25MHz// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2__bic_SR_register(SCG0);                  // Enable the FLL control loop// Worst-case settling time for the DCO when the DCO range bits have been// changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx// UG for optimization.// 32 x 32 x 25 MHz / 32,768 Hz ~ 780k MCLK cycles for DCO to settle__delay_cycles(782000);// Loop until XT1,XT2 & DCO stabilizes - In this case only DCO has to stabilizedo{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);         // Clear XT2,XT1,DCO fault flagsSFRIFG1 &= ~OFIFG;                                                              // Clear fault flags}while (SFRIFG1&OFIFG);                                                        // Test oscillator fault flagP1DIR &= ~BIT1;                 //把P1.1配置为输入。P1REN |= BIT1;                  //启用上/下拉电阻P1OUT |= BIT1;                  //使用上拉电阻P2DIR &= ~BIT1;                 //把P2.1配置为输入。P2REN |= BIT1;                  //启用上/下拉电阻P2OUT |= BIT1;                  //使用上拉电阻UCSCTL4 |=  SELA__DCOCLK + SELS__REFOCLK;   // 设置ACLK选择DCOCLK,SMCLK选择REFOCLKP1DIR |= BIT2;                       // 配置P1.2为输出P1SEL |= BIT2;                       // 选择外设功能,作为定时器A的比较模式输出TA0CCR0 = 500;TA0CCTL1 = OUTMOD_7;                      //输出模式7TA0CCR1 = 0;                            //配置CCR1,控制占空比TA0CTL = TASSEL_1 + MC_1 + TACLR;         // 定时器使用ACLK, 增计数模式, 清除计数器的计数值。/*****************************************************************************************************//*配置TA1,用来扫描按键,给按键消抖*/TA1CTL = TASSEL_2 + MC_1 + TACLR;         // SMCLK, 增计数模式, clear TARTA1CCTL0 = CCIE;                          // CCR0 interrupt enabledTA1CCR0 = 60;/*****************************************************************************************************/__bis_SR_register(LPM0_bits+GIE);     //进入低功耗模式0,打开全局中断。__no_operation();                      // For debuggerreturn 0;
}#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{static unsigned key1_now=0;static unsigned key2_now=0;unsigned key1_past=0;unsigned key2_past=0;key1_past=key1_now;key2_past=key2_now;if( P1IN&BIT1 )key1_now=1;elsekey1_now=0;if( P2IN&BIT1 )key2_now=1;elsekey2_now=0;if( (key1_past==1)&&(key1_now==0) ){if(TA0CCR1>0)TA0CCR1 -= 20;}else if( (key2_past==1)&&(key2_now==0) ){if(TA0CCR1<TA0CCR0)TA0CCR1 += 20;}
}void SetVcoreUp (unsigned int level)
{// Open PMM registers for writePMMCTL0_H = PMMPW_H;// Set SVS/SVM high side new levelSVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new levelSVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;// Wait till SVM is settledwhile ((PMMIFG & SVSMLDLYIFG) == 0);// Clear already set flagsPMMIFG &= ~(SVMLVLRIFG + SVMLIFG);// Set VCore to new levelPMMCTL0_L = PMMCOREV0 * level;// Wait till new level reachedif ((PMMIFG & SVMLIFG))while ((PMMIFG & SVMLVLRIFG) == 0);// Set SVS/SVM low side to new levelSVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write accessPMMCTL0_H = 0x00;
}

MSP430F5529实现LED1无极调光相关推荐

  1. MSP430F5529 DriverLib 库函数学习笔记(二)GPIO

    目录 硬知识 一.MSP430单片机端口概述 二.通用IO端口输出特性 三.端口P1和P2 1.输入寄存器PxIN 2.输出寄存器PxOUT 3.方向寄存器PxDIR 4.上拉/下拉电阻使能寄存器Px ...

  2. MSP430F5529学习笔记(2)——点亮LED

    TI官方MSP430F5529开发板原理图和中文开发手册:MSP430F5529学习笔记(1)--环境配置 目录 原理图和中文开发手册获取方法 点亮LED1 分析电路图 写程序,点亮LED1 1,首先 ...

  3. MSP430F5529学习笔记(5)——按键切换灯的亮灭

    MSP430F5529学习笔记(4)--按键点灯: 目录 官方示例代码 内容解析 BIT0的含义 ^=解析 按键消抖 增加的宏定义 问题 解决办法 官方示例代码 官方视频教程里面的代码如下,我做了些许 ...

  4. MSP430F5529实现四位数码管数字显示

    一.四位数码管 1.四位数码管的分类 四位数码管使一种半导体发光器件,其基本单元为发光二极管.按照发光二极管连接方式可以分为共阳极数码管和共阴极数码管. 共阳数码管使指将所有发光二极管的阳极接在一起形 ...

  5. (9)MSP430F5529 定时器Timer_A

    MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器).Timer ...

  6. 外部中断器1C语言程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 * 名称:外部中断 * 日期:2013-9-10 * 晶振:11.0592MHZ ************************************ ...

  7. (12)MSP430F5529 常用内置函数和一些说明

    (1)  MSP430F5529支持最高工作频率为25MHZ,也就是说你通过 锁相环倍频来提高系统运行速度是有一个限制的, 最高只能到25MHZ(再高没意思了). (2)几个重要的内联函数 (内联函数 ...

  8. 中断按键c语言程序设计,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 * 名称:外部中断 * 日期:2013-9-10 * 晶振:11.0592MHZ ************************************ ...

  9. MSP430F5529 DriverLib 库函数I2C驱动OLED屏幕

    目录 I2C驱动代码 MSP430F5529_I2C.c MSP430F5529_I2C.h OLED初始化及测试 OLED驱动代码 OLED.c OLED.h OLED_Font.h 显示效果 平台 ...

最新文章

  1. spark mllib 预测之LinearRegression(线性回归)
  2. jQuery对下拉框Select操作总结
  3. ADS1220 使用FPGA调试
  4. 山东鲁能轨道智能巡检机器人_城市轨道智能巡检机器人原来你这么酷炫!
  5. AI 口罩督查官诞生,识别率高达 85%!
  6. 密码学研究-加密解密
  7. FFMPEG中最关键的结构体之间的关系
  8. Google 搜索命令
  9. Photoshop: 机关单位公章
  10. 2021 年电工杯 B 题
  11. DICOM医学图像处理:基于DCMTK工具包学习和分析worklist
  12. Zynq UltraScale+ MPSoC配置DDR4参数
  13. openpyxl实现表头隔行插入及合并单元格
  14. 计算机无法访问inter,电脑网络提示无Internet访问权限解决办法
  15. 如何破解zip压缩文件的密码问题?
  16. QTP自动化测试培训大纲
  17. 基于沙猫群优化算法的函数寻优算法
  18. python 列表写入excel_python怎么读取和写入excel表格
  19. 4、Linux:如何在zip压缩文件中搜索指定内容
  20. RecyclerView+网络加载数据图片+属性动画对角平移透明

热门文章

  1. 知识图谱-知识融合工具(二):Limes【实体匹配】
  2. debug 服务器应用程序不可用
  3. 夺命雷公狗—玩转SEO---33---DEDE网站安全
  4. meta http-equiv=”refresh” content=”3”意思
  5. IOC篇之IOC概念
  6. Java 图片 滑动 解锁
  7. easyUi easyui-textbox 多行换行失效问题
  8. JS验证日期【闰年月大月小】
  9. apt-get behind a proxy server
  10. FullCalendar插件的使用