历史上的今天
今天是:2025年04月18日(星期五)
2018年04月18日 | MSP430学习笔记3-PWM的产生
2018-04-18 来源:eefocus
这个程序主要是利用定时器的比较输出功能来产生PWM波控制LED,定时器A的比较输出对应P2.3 P2.4,因此在程序的一开始需要设置比较匹配的工作模式,需要说明的是头文件中已经对各种模式给了详细的定义,不需要在去配置寄存器,程序较为简单,稍微扩展一下去控制舵机也很容易,大家自己分析。
/*******************************************************
程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁
-------------------------------------------------------
拨码开关设置:将LED位拨至ON,其余拨至OFF
测试说明:观察LED的亮灭的时间长短
*******************************************************/
#include
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL = WDTPW + WDTHOLD; // 关狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
P2DIR = 0xff; // P2端口设置为输出
P2OUT = 0xff; // 关闭其他LED
P2SEL |= BIT3 + BIT4; // P2.3和P2.4连接内部模块,使用的是第二功能作为TimerA的比较输出。
CCR0 = 4096-1; // PWM周期为1S
CCTL1 = OUTMOD_7; // 捕捉比较寄存器的配置,工作在方式7,计数值等于比较值时输出置位
CCR1 = 4000; // 输出1的比较值
CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 500; // 输出2的比较值改变此值即可以改变输出的pwm波的占空比
TACTL = TASSEL_1 + ID_3 + MC_1; // ACLK/8, up mode
//_BIS_SR(LPM3_bits); // Enter LPM3
LPM3;
}
史海拾趣
|
我需要一个放大电路,它的要求是把我现有的一个0.6V的开关,放大成3.0V的开关,最后是要控制发光二极管亮灭,可以提供12.0V电源,哪位高人可以帮忙设计或有成品电路可以用请提供一下信息啊?… 查看全部问答> |
|
我现在键盘上面有个PRG按键..长按进入C参数 界面,,但是我觉得时间还不够长,,哪个帮我看下程序应该修改什么地方??把时间搞长点,,现在只要0.5秒就进入C的样子,,我想搞到2S,,不明白的尽管问… 查看全部问答> |
|
我是一个嵌入式linux开发的新手,现在想自学驱动开发,但是我一直有个疑问,请您指教: 我到底先读《linux设备驱动程序(第三版)》和宋老师编著的《linux设备驱动开发详解》哪一本书?我很苦恼。。。… 查看全部问答> |
|
c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源, 目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f4 ...… 查看全部问答> |




