MSP430G2553之timerA产生PWM
总结:选SMCLK(可以测出来)
若选ACLK,经示波器PWM时有时无
举例一:
#include <MSP430G2553.h>
#define CPU_F ((double)12000000)//cpu frequency12000000
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
//功能:TA0.1输出PWM
//说明:TA0.1由P1.2 p1.6输出
void timerA0_1_init()
{
TACTL |= TASSEL_2 + MC_1; //选SMCLK(可以测出来),增计数
//若选ACLK,经示波器PWM时有时无
CCTL1 = OUTMOD_7; //输出模式为复位/置位
CCR0 = 1115000/1000; //SMCLK时钟频率为1.115MHZ,PWM(频率):1.115MHZ/CCR0
CCR1 = (1115000/1000) * 30/100; //占空比:CCR1/CCR0 ;
}
//功能:TA1.1输出PWM
//说明:TA1.1由P2.1 P2.2输出;
//TA1.1与TA1.2共用TA1CCR0,TA1CTL
void timerA1_1_init()
{
TA1CCTL1 = OUTMOD_7;
TA1CCR1 = (1115000/200) * 10/100; ; //占空比:TACCR1/TACCR0
}
//功能:TA1.2输出PWM
//说明:TA1.2由P2.4 P2.5输出
void timerA1_2_init()
{
TA1CTL |= TASSEL_2 + MC_1; //选SMCLK,增计数
//若选ACLK,经示波器PWM时有时无
TA1CCTL2 = OUTMOD_7; //输出模式为复位/置位
TA1CCR0 = 1115000/200; ///SMCLK时钟频率为1.115MHZ,PWM(频率):1.115MHZ/CCR0
TA1CCR2 = (1115000/200) * 60/100; //占空比: CCR2/CCR0
}
void port_init()
{
P1SEL |= BIT2 + BIT6;
P1DIR |= BIT2 + BIT6;
//P1.2/6 设为输出TA0.1
P2SEL |= BIT1 + BIT2;
P2DIR |= BIT1 + BIT2;
//P2.1/2设为输出TA1.1
P2SEL |= BIT4 + BIT5;
P2DIR |= BIT4 + BIT5;
//P2.4/5 设为输出TA1.2
}
void main()
{
WDTCTL = WDTPW + WDTHOLD;
port_init();
timerA0_1_init();
timerA1_2_init();
timerA1_1_init();
_BIS_SR(CPUOFF); // Enter LPM0 进入低功耗模式0 SMCLK ON,ACLK ON
//while(1);
}
举例2:
#include <MSP430G2553.h>
void set_timerA(void) {
P2DIR |= 0x12; // P2.1 and P2.4 output
P2SEL |= 0x12; // P2.1 and P2.4 TA1 options
TA1CCR0 = 1000000/1000-1; // PWM Period
TA1CCTL1 = OUTMOD_7; // CCR1 reset/set
TA1CCTL2 = OUTMOD_7;
TA1CCR1 =(1115000/1000)*80/100;
TA1CCR2 = (1115000/1000)*20/100;
TA1CTL = TASSEL_2 + MC_1; // SMCLK, up mode
// CCTL0 = CCIE; // CCR0 interrupt enabled
}
//参数说明:duty是占空比,50是代表百分之50,范围1-100
void pwm_sinit(unsigned char duty)
{
TACTL = TASSEL_2 + MC_1;
CCR0 = 1115000/500; //通过示波器观察此时SMLK=1115000
CCTL1 = OUTMOD_7;
CCR1 = (1115000*duty)/(100*500);
P1DIR |= 0x44; //P1.2/6 output
P1SEL |= 0x44; //通过特殊功能口输出
}
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Set_TimerA();
pwm_sinit(50);
while(1);
}
MSP430G2553之timerA产生PWM的更多相关文章
- MSP430G2553 TimerA中断说明
一.TimerA中断向量. G2553一共有2个TimerA,分别是TimerA0和TimerA1,中断入口地址分别是: TimerA0中断向量名称 <--> 中断源 ------ ...
- (原创)基于MCU的频率可调,占空比可调的PWM实现(MCU,MCS-51/MSP430)
1.Abstract 做这个是受朋友之邀,用在控制电机转动的方面.他刚好在一家好的单位实习,手头工作比较多,无暇分身,所以找我帮忙做个模型.要求很明晰,PWM的频率在0~1KHz范围内,占空比 ...
- MSP430:定时器学习TimerA
4. 定时器TA 一.时钟源1.时钟源:ACLK/SMCLK 外部TACLK/INCLK2.分频:1/2/4/8 当 (注:TACLR 置位时,分频器复位) 二.计数模式通过设置MCx可以设置定时器的 ...
- STM32之PWM君
PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制,玩过飞思卡尔的人估计对PWM非常的不陌生吧.电机驱动需要PWM,控制舵机的转向需要PWM,总 ...
- [nRF51822] 12、基础实验代码解析大全 · 实验19 - PWM
一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指 ...
- Windows on Device 项目实践 1 - PWM调光灯制作
在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...
- 用Arduino剖析PWM脉宽调制
PWM(Pulse Width Modulation)简介 PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号,也就是方波信号.多用于在数字电路中驱动负载随时间变化的电子元件,如LED,电机等. ...
- Arduino学习经验(一)之解决舵机库和pwm输出冲突
一.前言 最近在公司学习Arduino uno ,用它实现小车超声波避障功能.实现的功能很简单,就是在小车前方挂一个超声波模块,当碰到障碍物时,会通过舵机进行摆头,判断两边的距离,进行左右转弯.但是碰 ...
- stm8s103 PWM
stm8s103 PWM的设置不难,但是很多人不注意选项字节这个问题,PWM是IO口的第二功能,要用ST Visual Programmer 修改选项字节. 只需要修改AFR0的功能就可以了
随机推荐
- Android布局_表格布局TableLayout
一.TableLayout概述 TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象 二.TableLayout的全局属性 1 ...
- Maven打包遇到的一些问题(zhuan)
http://qqbwww.iteye.com/blog/2042307 **************************************** #Maven打包遇到的一些问题 ## 1.将 ...
- openSUSE 国内镜像和镜像使用帮助 (zhuan)
https://my.oschina.net/u/2475751/blog/631036?p={{currentPage-1}} https://lug.ustc.edu.cn/wiki/mirror ...
- [转载]最牛B的编码套路
原文地址:http://www.codeceo.com/article/nb-coding-style.html 这篇文章很不错,推荐给大家看. 最近,我大量阅读了Steve Yegge的文章.其中有 ...
- 数据存储之SQLite
SQLite是目前主流的嵌入式关系型数据库,其最主要的特点就是轻量级.跨平台,当前很多嵌入式操作系统都将其作为数据库首选.虽然SQLite是一款轻型数据库,但是其功能也绝不亚于很多大型关系数据库.学习 ...
- 【ubuntu java】java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
先检查了环境变量PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loca ...
- dom4j如何解析xml
简单解析自己定义的xml文件,首先,给解析xml文件的类来个构造方法: public xmlData(File xmlFile) { file = xmlFile; try { saxReader = ...
- requestAnimationFrame在Chrome里的实现
requestAnimationFrame是HTML5游戏和动画必不可少的函数,相对于setTimeout或setInterval它有两个优势,一是它注册的回调函数与浏览器的渲染同步,不用担心Time ...
- c++相关的类型推导
c++11和boost库增加许多关于类型推导(编译期)的关键字和类型, 用好这些机制, 对于编写项目的一些组件帮助颇大.正所谓工欲善其事,必先利其器. 1.初始化某种类型的变量 auto var = ...
- noip2016酱油记day1
真的是noip2016酱油记了. t1模拟,应该可以过. t2用了个简单的桶瞎搞,估计剩50pt了. t3直接不会写. 心好累... 考的分数肯定没去年高. 但不论如何,明天正常发挥就好. 正常发挥下 ...