专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
MSP430定时器a和b产生pwm的使用时有什么不同
2019-03-24 10:22
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
8896
9
1423
MSP430定时器a和b产生pwm的使用时有什么不同
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
shower.xu
1楼-- · 2019-03-24 17:45
精彩回答 2 元偷偷看……
加载中...
834707939
2楼-- · 2019-03-24 19:25
< :TI_MSP430_内容页_SA7 -->
#include "msp430.h"
typedef unsigned char uchar;
typedef unsigned int uint;
uchar flag;
uchar table[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,
44,45,46,47,48,49,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,
33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,
10,9,8,7,6,5,4,3,2,1,0};//呼吸的效果
void main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 &= ~XT2OFF; //打开xt2晶振
do
{
IFG1 &= ~OFIFG;
for(i = 0xff; i > 0; i--);
}
while((IFG1 & OFIFG)); //等待起振,消除晶体失败标志
BCSCTL2 |= SELM_2 + SELS; //mclk.smclk选择高频晶振
TACTL |= TASSEL_2 + ID_3 + MC_1; //计数时钟选测smclk,8分频,增计数模式 1mhz
//TBCTL |= TBSSEL_2 + ID_3+ MC_1 ;
TBCTL|= TBSSEL_2 + TBCLGRP_0 + ID_3 + MC_1 ;
P4SEL|=BIT2;
P4DIR|=BIT2;
TBCCR0 = 50; // 50us de 周期
TBCCTL1 = OUTMOD_3+CLLD_0;
// TBCCTL1 &= ~CAP;
TACCR0 =5000;
TACCTL0 = CCIE; // 开中断使能
_EINT(); // Enter LPM0 w/ interrupt
// LPM0; //低功耗
while(1); //应该不会进入此句
}
#pragma vector = TIMERA0_VECTOR
__interrupt void timeA()
{
static uchar i = 0;
flag++;
P2DIR = 0XFF;
P2OUT = 0XFF;
if(flag == 4) //大概20 ms时 较为理想
{
flag = 0;
TBCCR1 = table[i++];
if(i > 100)
{ i = 0;
P2DIR = 0XFF;
P2OUT = 0X00;
}
}
}这是我写的, 你看看行不行啊
加载中...
强仔00001
3楼-- · 2019-03-24 23:10
我记得是一样的吧
加载中...
834707939
4楼-- · 2019-03-25 02:52
精彩回答 2 元偷偷看……
加载中...
强仔00001
5楼-- · 2019-03-25 06:19
834707939 发表于 2015-3-31 20:54
不行啊 , 我用a可以, b 就不行 了
官方的历程有TIMER B的历程的,参考官方的看看,你肯定还没配置好
加载中...
834707939
6楼-- · 2019-03-25 07:51
好的,我看看啊 , 谢了
加载中...
1
2
下一页
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include "msp430.h"
typedef unsigned char uchar;
typedef unsigned int uint;
uchar flag;
uchar table[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,
44,45,46,47,48,49,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,
33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,
10,9,8,7,6,5,4,3,2,1,0};//呼吸的效果
void main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 &= ~XT2OFF; //打开xt2晶振
do
{
IFG1 &= ~OFIFG;
for(i = 0xff; i > 0; i--);
}
while((IFG1 & OFIFG)); //等待起振,消除晶体失败标志
BCSCTL2 |= SELM_2 + SELS; //mclk.smclk选择高频晶振
TACTL |= TASSEL_2 + ID_3 + MC_1; //计数时钟选测smclk,8分频,增计数模式 1mhz
//TBCTL |= TBSSEL_2 + ID_3+ MC_1 ;
TBCTL|= TBSSEL_2 + TBCLGRP_0 + ID_3 + MC_1 ;
P4SEL|=BIT2;
P4DIR|=BIT2;
TBCCR0 = 50; // 50us de 周期
TBCCTL1 = OUTMOD_3+CLLD_0;
// TBCCTL1 &= ~CAP;
TACCR0 =5000;
TACCTL0 = CCIE; // 开中断使能
_EINT(); // Enter LPM0 w/ interrupt
// LPM0; //低功耗
while(1); //应该不会进入此句
}
#pragma vector = TIMERA0_VECTOR
__interrupt void timeA()
{
static uchar i = 0;
flag++;
P2DIR = 0XFF;
P2OUT = 0XFF;
if(flag == 4) //大概20 ms时 较为理想
{
flag = 0;
TBCCR1 = table[i++];
if(i > 100)
{ i = 0;
P2DIR = 0XFF;
P2OUT = 0X00;
}
}
}这是我写的, 你看看行不行啊
官方的历程有TIMER B的历程的,参考官方的看看,你肯定还没配置好
一周热门 更多>