这是第一次写文章。主要母的呢,还是记录我的学习过程.
下面是我今天写的程序,依照数据手册P211上的提示写的。感觉还可以.今天把nRF24L01也调好了。还算满意吧.nRF24L01,找时间发上.
#include "io430.h"
void Init_Clock(void)
{
int i=0;
BCSCTL1 &= ~XT2OFF; // XT2on
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2 + SELS; // MCLK = SMCLK = XT2 (safe)
// _EINT(); //打开全局中断控制,若不需要打开,可以屏蔽本句
}
void Init_TimerA(void)
{
P2DIR=0xFF;
P2OUT=0xFF;
P2SEL|=BIT3+BIT4;
TACTL|=TASSEL_2+ID_3+MC_3;
TACCR0=1000-1;//1ms
TACCTL1|=OUTMOD_2;
TACCR1=500-1;
TACCTL2|=OUTMOD_6;
TACCR2=520-1;
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
Init_Clock();
Init_TimerA();
while(1);
}
关键字:MSP430 PWM波 nRF24L01
引用地址:
MSP430产生PWM波
推荐阅读最新更新时间:2024-10-23 14:49
MSP430F5529-PWM波在串口中的输出及调整
本篇的代码能在试用的端口输出PWM波(附上修改的基本方法) 先放代码: PWM.c Created on: 2021年9月12日 Author: feidao #include MSP430F5529.h #include PWM.h void PWM1(volatile int direction,volatile int speed) { P1DIR |=BIT4; //TA0.3 P1SEL |=BIT4; P1DIR |=BIT5; //TA0.4 P1SEL |=BIT5; TA0CCR0=650;//修改它跟频率有关 if(direction==1) { TA0CCTL3=OUTMOD
[单片机]
MSP430FR6989系列教程之PWM波
一、PWM波 单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平。要输出不同的模拟电压,就要用到PWM,通过改变IO口输出的方波的占空比从而获得使用数字信号模拟成的模拟电压信号,在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压,PWM就是通过这种原理实现D/A转换的。 可以看到当采用不同的输出模式时,会得到不同的脉冲波形,我们通过更改预分频值和自动重装载值就可以得到不同周期的脉冲信号,通过改变输出比较的阈值就可以实现对占空比的调节。 所以,很显然,在我们明白了这一点后,我们就可以在此基础上完成用PWM波实现led呼吸灯的现象。 二、代码编写 思路整理 初始化系统时钟 初始化IO口 配置定时器
[单片机]
MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 1.通过Timer_A_outputPWM配置产生PWM波 所选输出引脚为P1.2 初始化函数 #define TIMER_PERIOD 12500 void Timer_A_PWM_Init(void) { Timer_A_outputPWMParam htim = {0}; //P1.2复用输出 GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_
[单片机]
msp430g2553输出PWM波
用msp430g2553的定时器timerA就可以实现PWM波,内容不难!设置下时钟源,定时器配置一下就可以了 仿真: 代码: TA1CTL:选时钟源,计数模式增 TA1CCR0(定时器寄存器)与频率有关; TA1CCR1(定时器寄存器)与占空比有关; TA1CCTL1:OUTMOD_7输出模式选择。 #include msp430.h void main(void){ TA1CTL |= TASSEL_2 + MC_1; //选SMCLK,增计数 P2SEL |= BIT1; P2DIR |= BIT1;//P2.1设为输出TA1.1 TA1CCTL1 = OUTMOD_7; TA1CCR0 = 1115000/2
[单片机]
MSP430F5529通过定时器A产生两个反相频率占空比可调PWM波
MSP430F5529的定时器还是挺好用的,具有定时计数和捕获的功能,具有高达7个捕获比较寄存器,支持多路捕获/比较。这里我用到了两个定时器产生两个反相的PWM波并通过一个捕获比较器捕获其中一个PWM波,显示在OLED12864显示屏上(本实验使用的是MSP-EXP430F5529LP开发板,使用的软件是IAR)。 实现的功能为: 1、利用MSP430内部PWM波发生器产生两路反相频率为 50Hz到1KHz,占空比为10%到90%的PWM波。 2、要求频率和占空比通过按键S1和S2分别设置。频率按50Hz步进,占空比按10%步进。 3、利用MSP430单片机的捕获/比较器测量该PWM波 的频率和占空比,且显示于oled屏幕上。 (
[单片机]
MSP430下TB产生两路PWM波的操作
其实代码呢,很简单。就是有一个问题困扰了我很长时间,后来终于明白了。 这个是捕获模式下用的吧。 在需要PWM波生成时可以用以下代码: void PWM_Init() { P4SEL|=BIT1+BIT2+BIT3+BIT4; P4DIR|=BIT1+BIT2+BIT3+BIT4; TBCCR0=8000-1; TBCCTL1|=OUTMOD_2;//left TBCCR1=2000-1; TBCCTL2|=OUTMOD_6; TBCCR2=2160-1;//dead time 20us TBCCTL3|=OUTMOD_2;//right TBCCR3=4000-1; TBCCTL4|
[单片机]
MSP430产生PWM波
这是第一次写文章。主要母的呢,还是记录我的学习过程. 下面是我今天写的程序,依照数据手册P211上的提示写的。感觉还可以.今天把nRF24L01也调好了。还算满意吧.nRF24L01,找时间发上. #include io430.h void Init_Clock(void) { int i=0; BCSCTL1 &= ~XT2OFF; // XT2on do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0xFF; i 0; i--); // Time for flag to
[单片机]
MSP430F149单片机能输出多少路PWM波?
在使用430的PWM波的时候,我一直有一个困惑,那就是它到底能输出几路PWM波?我想别的朋友可能也有相同的困惑,在我查找了好多资料之后最终搞懂了,下面分享一下学习经验。 首先,MSP430F149有两个16位的定时器Timer_A和Timer_B,其中TA有3个捕获比较单元,TB有7个捕获比较单元,产生PWM波需要将定时器配置在比较模式下,刚开始我以为既然TA有三个捕获比较模块,那么就应该有三个PWM波,结果怎么配置都无法产生TA1,后来在我仔细查看User's Guide才弄懂了,下面先上图: 上图说道:每个捕获、比较模块的输出可以产生PWM信号,每个输出根据EQU0和EQUX可以配置为8种模式。 我们知道每
[单片机]