历史上的今天
今天是:2025年07月25日(星期五)
2020年07月25日 | MSP430f5529之PWM控制舵机程序
2020-07-25 来源:51hei
#include int sum=0; //全局变量 int main(void) { volatile unsigned int i; //局部变量 //设置timerA相关参数 WDTCTL = WDTPW+WDTHOLD; // 关闭看门狗 P1DIR |= BIT2; // 将P1.2设置为输出端口,验证状态 P2DIR |= BIT0; //P2.0输出PWM波 TA0CCTL1 = OUTMOD_7; //将输出模式选择为模式7 TA0CTL = TASSEL_1 + MC_1 + TACLR ; //选择ACLK时钟源,timerA计数模式选择up模式,计数到TA0CCR0,重置timerA计数器 TA1CCTL1 = OUTMOD_7; TA1CTL = TASSEL_1 + MC_1 +TACLR ; P1REN |= BIT7; // 使能端口1.7 P1OUT |= BIT7; // 选择下拉模式 P1IES |= BIT7; // 1.7端口中断触发沿选择下降沿,高到低触发 P1IFG &= ~BIT7; // 1.7端口中断寄存器清零 P1IE |= BIT7; // 1.7端口中断使能 __bis_SR_register(GIE); //将GIE置1,打开全局中断使能 while(1) // 采用switch,每一个case值对应一个状态 { switch (sum) { case 0: P1OUT &= ~BIT2; //初始状态为低功耗状态 TA0CCR1 = 0; __bis_SR_register(LPM3_bits); //将LPM3置1,使系统进入低功耗 break; //跳出switch函数 case 1: //选系统的默认时钟,频率为1MHZ。 P1OUT &= ~BIT2; //状态1要求:转到—60°,900微秒,设置的为1000微秒,时钟频率为32768Hz TA0CCR0 = 20000; //验证进入状态1 TA0CCR1 = 10000; TA1CCR0 = 100; //输出PWM波周期 TA1CCR1 = 34; 占空比 P1DIR |=BIT2; P1SEL |=BIT2; P2DIR |=BIT0; P2SEL |=BIT0; break; case 2: P1OUT &= ~BIT2; //状态2要求:转到0°。1520微秒 TA0CCR0 = 20000; TA0CCR1 = 5000; TA1CCR0 = 100; TA1CCR1 = 50; P1DIR |=BIT2; P1SEL |=BIT2; P2DIR |=BIT0; P2SEL |=BIT0; break; case 3: //时钟为辅助时钟ACLK,频率为32768HZ //P1OUT &= ~BIT2; //状态3要求:转到60° 2100微秒 TA0CCR0 = 20000; TA0CCR1 = 800; TA1CCR0 = 100; TA1CCR1 = 66; P1DIR |=BIT2; P1SEL |=BIT2; //选择1.2端口的复用功能,使之能够实现亮和灭 P2DIR |=BIT0; P2SEL |=BIT0; break; } if(sum>3) //当sum的值超过3时,要让sum减3,重新进入循环 { sum=sum-3; } } } //采用S1作为按键实现 #pragma vector=PORT1_VECTOR //端口p1的中断函数 __interrupt void Port_1(void) { unsigned int push_key =0; push_key == P1IFG & (P1IN); __delay_cycles(20000); //精确时间延迟,乘以MCLK时钟周期,防止抖动 if( push_key == (P1IN & BIT7)) { __low_power_mode_off_on_exit(); //SR寄存器置0,退出低功耗 sum=sum+1; // 按下p1.7,sum加1,周期变化一次 } P1IFG &= ~BIT7; // p1.7中断重置 }
下一篇:MSP430实现计时器的源代码
史海拾趣
|
原理相信我们每个人都熟悉,但是真正动手付诸实践,也需要不小的兴趣哦 i\'m going to show you how to make your own low-power wireless chargingcircuits that will let you pass electricity through the air (or anyother non-metallic med ...… 查看全部问答> |
|
LPC1343+JLINKV7V8都不能调试?大家帮忙啊! 首先我的JLINK不能设置为100K的速度。 然后下载程序也不可以。 希望高手指点。 问题已经解决了!! [ 本帖最后由 lilong8470 于 2010-6-13 15:59 编辑 ]… 查看全部问答> |
|
如题。 UINT WINAPI ImeToAsciiEx( UINT uVirtKey, UINT uScanCode, CONST LPBYTE lpbKeyState, ...… 查看全部问答> |
|
增量式编码器的相位对齐方式 在此讨论中,增量式编码器的输出信号为方波信号,又可以分为带换相信号的增量式编码器和普通的增量式编码器,普通的增量式编码器具备两相正交方波脉冲输出信号A和B,以及零位信号Z;带换相信号的增量式编码器除具备ABZ ...… 查看全部问答> |
|
本帖最后由 ny760117144 于 2014-6-11 18:46 编辑 //P3^2和P3^3低电平检测,液晶输出圈数、序号、低电平时间 #include #include #define uchar unsigned char #define uint unsigned int uchar sun;//sun为主函数中1602显示地址所用 uchar ...… 查看全部问答> |
|
如题,这个MSP430 LaunchPad是全新的,盒子什么的都在呢,用不到。换个其他的板子或者什么东西,或者芯币兑换,起芯3000,大家有什么想拿出来换的可以联系我啊 … 查看全部问答> |
|
TMS320C6713 MCBSP0 SPI Slave模式 接收进不了中断 各位朋友: SPI slave模式CPU轮询可以接收到数据,并且是正确的,但是 配置为中断接收却进步了中断 中断配置代码: void Setup_Spi_Interrupt(void) { //point to the IRQ vector table IRQ_setVecs( ...… 查看全部问答> |
|
在学习Thread过程中会碰到很多问题, 由于资料相对封闭, 而且使用的人较少导致有些问题很难通过文档(Thread API函数的说明基本就一句话)来找出来。如果有Thread的wiki就好了, 能让新手少走很多弯路。 现在还没解决的问题如下: 1. 各种地址的 ...… 查看全部问答> |




