MSP430G2253 产生占空比可调的PWM
来源:互联网 发布:淘宝衣服缩水美女视频 编辑:程序博客网 时间:2024/05/16 14:35
MSP430G2253 产生占空比可调的PWM
最近刚刚做了一个用430驱动白光LED的代码 其中用到了以前用到的ADC和PWA这些常用的外设 发现对片子掌握的还是太基础 现在复习一下 以后用到的时候也算有个参考 今天就只学习一点最基本的功能 用430产生一个占空比可调的PWM
先说一下步骤:
1:首先我们要知道那个引脚可以作为定时PWM的输出引脚 如果不太熟悉引脚 就去查阅册
2:配置这个IO 这种情况下 无论那个系列的片子 基本作为PWM输出的时候 IO配置为输 出 选择其端口复用功能 详细配置 看手册
3:设置PWM的周期 TACCR0 或者CCR0 貌似是一个冬冬吧 这里面的数值决定了你PWM的 周期 举个简单的例子 比如你使用1MHZ的时钟频率 CCR0=100 则PWM的周期为100us 那么相应的频率就是10Khz
4:设置寄存器TACTL 设置输出模式 这里输出模式有7种 这里我贴一个图片 可以很好的理解这几种模式:
大家可以仔细观察一下 七种输出模式的2和6两种模式 他们输出的PWM恰好是互补的 其实这为我们需要互补的两个PWM提供了一个很好的生成方法 特别使我们在驱动全桥的让对角线交互导通的时候需要用到这种互补的PWM并且 他还可以生成死区区间 这点在英文手册中有讲到 有需要的可以去看一下 死区时间=时钟周期*(TACCR1-TACCR2)
5:设置相应的占空比 就是定时器捕获比较寄存器 其实就是CCR1和CCR2的赋值问题
6:操作TACTL 也就是定时器A控制寄存器 选择时钟源和计数模式 至于分频和中断什么这里暂时不考虑了 寄存器里面的计数模式决定你是否开启了定时器 以及你的计数模式
如图:
配置完成这些自然就能产生相应的PWM了 但是我们如何改变占空比呢 其实比较简单 只需要我们按键改变一下CCR1或者CCR2里面的值皆就可以了
下面附上一段代码 仅供参考 按键接P1.3和P1.4 P1.2产生PWM 在示波器上可以明显看到用按键控制波形的变化
代码如下:
#include <msp430.h>long int flag=10;//决定PWM占空比的变量/****************************************************************************函数名称 :delay函数功能:延时 延时的长短由tmp的数值决定函数参数:无函数返回值:无*****************************************************************************/void delay(void){ unsigned int tmp; for(tmp = 120;tmp > 0;tmp--);}/*****************************************************************************函数名称 :Key函数功能 :检测按键 用来改变flag的值 进而改变PWM的占空比 目前PWM的精确度为1%函数参数:无函数返回值:无*****************************************************************************/void Key(){ P1DIR&=~(BIT3+BIT3);//设置IO为输入模式 P1REN|=BIT3+BIT4;//启用上拉/下拉模式 P1OUT|=BIT3+BIT4;//设置为上拉模式 { if((P1IN&BIT3)==0)//按键按下 { delay(); //延时用来消除按键的抖动 while(!(P1IN&BIT3)); //等待按键松手 flag+=1; //flag+1 用来改变占空比 if(flag>100) //占空比到100 清零 flag=0; } if((P1IN&BIT4)==0)//同上注释 { delay(); while(!(P1IN&BIT4)); flag-=1; if(flag>100) flag=0; } }}/**************************************************************************函数名称: PWM_Init函数功能:初始化PWM函数参数:无函数返回值:无***************************************************************************/void PWM_Init(){ P1DIR |= BIT2; // 设置P1.2为输出 P1SEL |= BIT2; // 选择P1.2的PWM功能 P1SEL2 = 0; //选择默认引脚功能 CCR0 = 100; // 设定PWM 周期 CCTL1 = OUTMOD_7; TACTL = TASSEL_2 + MC_1; // SMCLK时钟 增计数模式 }int main(void){ WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 PWM_Init(); for (;;) { Key(); CCR1 = flag; }}
阅读全文
1 0
- MSP430G2253 产生占空比可调的PWM
- MSP实时输出占空比可调的pwm波形
- STC12C5A60S2 PCA模块输出占空比可调PWM波形
- STM32F4_TIM输出PWM波形(可调频率、占空比)
- cc2530 timer 3 PWM <可调占空比>
- VB/VC实现可调占空比的PWM脉冲输出
- STM32一个Timer输出4路不同频率、可调占空比的PWM
- STM32一个Timer输出4路不同频率、可调占空比的PWM
- STM32一个Timer输出4路不同频率、可调占空比的PWM
- STM32学习笔记之对PWM频率和占空比都可调测试
- 调整pwm占空比
- STM32的PWM波的频率和占空比
- 51单片机按键控制输出pwm的占空比
- pwm频率和占空比的区别
- PWM的周期和占空比是如何计算
- STM32 PWM 占空比可变函数
- PWM占空比和分辨率
- avr频率占空比可调波形输出子函数
- 欢迎使用CSDN-markdown编辑器
- http请求
- iOS开发 蓝牙连接
- HTTP请求的八种方式
- 搭建scala的开发环境
- MSP430G2253 产生占空比可调的PWM
- 括号配对问题
- 媒体查询
- Entity Framework3.5 关于外键表的一些经验
- codeforces 896A Nephren gives a riddle dfs搜索
- sshpass的安装使用
- 使用PostGIS 2.0 Shapefile and DBF Loader Exporter工具导入shp文件
- accelerated 2-5-4
- 【java基础】09.内部类(InnerClass)