﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-乌托邦—电源之家-文章分类-单片机</title><link>http://www.cppblog.com/wangjinlongd/category/17738.html</link><description>梦在乌托邦</description><language>zh-cn</language><lastBuildDate>Thu, 15 Sep 2011 14:43:55 GMT</lastBuildDate><pubDate>Thu, 15 Sep 2011 14:43:55 GMT</pubDate><ttl>60</ttl><item><title>MSP430PWM学习笔记</title><link>http://www.cppblog.com/wangjinlongd/articles/154436.html</link><dc:creator>王Sir</dc:creator><author>王Sir</author><pubDate>Fri, 26 Aug 2011 08:51:00 GMT</pubDate><guid>http://www.cppblog.com/wangjinlongd/articles/154436.html</guid><wfw:comment>http://www.cppblog.com/wangjinlongd/comments/154436.html</wfw:comment><comments>http://www.cppblog.com/wangjinlongd/articles/154436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wangjinlongd/comments/commentRss/154436.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wangjinlongd/services/trackbacks/154436.html</trackback:ping><description><![CDATA[摘要：一直说要调调430的PWM控制器，却放到今天才调。<br />要准备电设，还是先把程序贴出，后面再做补充吧！<br />
<p>#include &lt;msp430x14x.h&gt;</p>
<p>#define MODE MC_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定时器工作模式，stop，Up to CCR0，Continous up，Up/Down</p>
<p>#define OUTMODE1 OUTMOD_6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //PWM1-PWM6的输出模式，参考手册<br />#define OUTMODE2 OUTMOD_2<br />#define OUTMODE3 OUTMOD_6<br />#define OUTMODE4 OUTMOD_2<br />#define OUTMODE5 OUTMOD_6<br />#define OUTMODE6 OUTMOD_2<br />/*----------------------------------------------------------------------------------<br />函数名称：Open_PWMB<br />功&nbsp;&nbsp;&nbsp; 能：打开PWM模块&#8212;&#8212;定时器B<br />参&nbsp;&nbsp;&nbsp; 数：无<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Open_PWMB(void)<br />{<br />&nbsp; TBCTL|=TBSSEL1 + ID_0 + MODE+ TBCLR ;<br />}<br />/*----------------------------------------------------------------------------------<br />函数名称：Close_PWMB<br />功&nbsp;&nbsp;&nbsp; 能：关闭PWM模块<br />参&nbsp;&nbsp;&nbsp; 数：无<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Close_PWMB(void)<br />{<br />&nbsp; TBCTL&amp;=~(MC1|MC0);<br />}<br />/*----------------------------------------------------------------------------------<br />函数名称：Set_PWM_FreqB<br />功&nbsp;&nbsp;&nbsp; 能：设置PWM频率<br />参&nbsp;&nbsp;&nbsp; 数：Freq--PWM频率<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Set_PWM_FreqB(unsigned int Freq)<br />{<br />&nbsp; TBCCR0=(8000000/Freq)-1;&nbsp; <br />}<br />/*----------------------------------------------------------------------------------<br />函数名称：Set_ScaleB<br />功&nbsp;&nbsp;&nbsp; 能：设置PWM占空比<br />参&nbsp;&nbsp;&nbsp; 数：PWM_N--PWM引用的引脚分布于DB7-DB1，Scale--PWM占空比<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Set_ScaleB(unsigned char PWM_N,unsigned char Scale)<br />{<br />&nbsp;&nbsp;&nbsp; unsigned char temp;<br />&nbsp;&nbsp;&nbsp; temp=0x02;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR1=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR2=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR3=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR4=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR5=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N)&nbsp;&nbsp;&nbsp; TBCCR6=(Scale*TBCCR0)/100;&nbsp;&nbsp;&nbsp; temp=temp&lt;&lt;1;<br />}<br />/*----------------------------------------------------------------------------------<br />函数名称：Set_OUT_Mode<br />功&nbsp;&nbsp;&nbsp; 能：设置PWM输出模式<br />参&nbsp;&nbsp;&nbsp; 数：PWM_N--PWM引用的引脚分布于DB7-DB1<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Set_OUT_Mode(unsigned char PWM_N)<br />{<br />&nbsp;&nbsp;&nbsp; unsigned char temp;<br />&nbsp;&nbsp;&nbsp; temp=0x02;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL1|=OUTMODE1;temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL2|=OUTMODE2;temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL3|=OUTMODE3;temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL4|=OUTMODE4;temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL5|=OUTMODE5;temp=temp&lt;&lt;1;<br />&nbsp;&nbsp;&nbsp; if(temp&amp;PWM_N) TBCCTL6|=OUTMODE6;temp=temp&lt;&lt;1;</p>
<p>}<br />/*----------------------------------------------------------------------------------<br />函数名称：Setup_PWMB<br />功&nbsp;&nbsp;&nbsp; 能：启动PWM模块<br />参&nbsp;&nbsp;&nbsp; 数：无<br />返回值&nbsp; ：无<br />----------------------------------------------------------------------------------*/<br />void Setup_PWMB(unsigned char PWM_N,unsigned int Freq,unsigned char Scale)<br />{<br />&nbsp; P4SEL|=PWM_N; P4DIR|=PWM_N;<br />&nbsp; Set_PWM_FreqB(Freq);<br />&nbsp; Set_ScaleB(PWM_N,Scale);<br />&nbsp; Set_OUT_Mode(PWM_N);<br />&nbsp; Open_PWMB();<br />}</p> <img src ="http://www.cppblog.com/wangjinlongd/aggbug/154436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wangjinlongd/" target="_blank">王Sir</a> 2011-08-26 16:51 <a href="http://www.cppblog.com/wangjinlongd/articles/154436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>