完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目的是制作一个通过按键来改变亮度的小灯用占空比做 代码如下 #include #include "Config.h" //开发板配置头文件,主要配置IO端口信息 #define KEY_IN (P1IN & 0xF0) int KEY_VAL = 0; //*********************************************************************** // MSP430IO口初始化 //*********************************************************************** void Port_Init() { LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF P1IES = 0xF0; //P14~P17选择下降沿中断 P1IE = 0xF0; //打开中断使能 P1IFG = 0x00; //中断标志位清零 } //*********************************************************************** // PWM初始化 //*********************************************************************** void PWM_Init1(void) //产生10KHZ、占空比为50%的PWM信号 { P1SEL |= BIT2; //P12口输出PWM信号 P1DIR |= BIT2; //P12口接入一个LED发光二极管 TACCR0 = 800; //CCR0 TACCR1 = 200; //CCR1,占空比50%,可以更改,LED灯亮度会变化 TACCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2;//复位/置位 TACTL |= TASSEL1 + MC0; //SMCLK做时钟源,1分频,增加计数模式 } void PWM_Init2(void) //产生10KHZ、占空比为50%的PWM信号 { P1SEL |= BIT2; //P12口输出PWM信号 P1DIR |= BIT2; //P12口接入一个LED发光二极管 TACCR0 = 800; //CCR0 TACCR1 = 400; //CCR1,占空比50%,可以更改,LED灯亮度会变化 TACCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2;//复位/置位 TACTL |= TASSEL1 + MC0; //SMCLK做时钟源,1分频,增加计数模式 } void PWM_Init3(void) //产生10KHZ、占空比为50%的PWM信号 { P1SEL |= BIT2; //P12口输出PWM信号 P1DIR |= BIT2; //P12口接入一个LED发光二极管 TACCR0 = 800; //CCR0 TACCR1 = 600; //CCR1,占空比50%,可以更改,LED灯亮度会变化 TACCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2;//复位/置位 TACTL |= TASSEL1 + MC0; //SMCLK做时钟源,1分频,增加计数模式 } void PWM_Init4(void) //产生10KHZ、占空比为50%的PWM信号 { P1SEL |= BIT2; //P12口输出PWM信号 P1DIR |= BIT2; //P12口接入一个LED发光二极管 TACCR0 = 800; //CCR0 TACCR1 = 800; //CCR1,占空比50%,可以更改,LED灯亮度会变化 TACCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2;//复位/置位 TACTL |= TASSEL1 + MC0; //SMCLK做时钟源,1分频,增加计数模式 } //************************************************************************* // pwm选择函数 //************************************************************************* void pwm_sel(int unm) { if(unm == 1) {void PWM_Init1();} else if(unm == 2) {void PWM_Init2();} else if(unm == 3) {void PWM_Init3();} else if(unm == 4) {void PWM_Init4();} } //************************************************************************* // 中断服务函数 //************************************************************************* #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) { if(P1IFG & 0xF0) { switch(P1IFG&0xF0) //进行一个与操作,避免判断值出现其他影响 { case 0x10: if(KEY_IN == 0xE0) //如果是第一个按键被按下 { delay_ms(20); //20ms的消抖时间 if(KEY_IN == 0xE0) { while(KEY_IN != 0xF0); //等待键释放 KEY_VAL = 1; P1IFG = 0; return; } } case 0x20: if(KEY_IN == 0xD0) //如果是第二个按键被按下 { delay_ms(20); if(KEY_IN == 0xD0) { while(KEY_IN != 0xF0); //等待键释放 KEY_VAL = 2; P1IFG = 0; return; } } case 0x40: if(KEY_IN == 0xB0) //如果是第三个按键被按下 { delay_ms(20); if(KEY_IN == 0xB0) { while(KEY_IN != 0xF0); //等待键释放 KEY_VAL = 3; P1IFG = 0; return; } } case 0x80: if(KEY_IN == 0x70) //如果是第四个按键被按下 { delay_ms(20); if(KEY_IN == 0x70) { while(KEY_IN != 0xF0); //等待键释放 KEY_VAL = 4; P1IFG = 0; return; } } default: while(KEY_IN != 0xF0); //等待键释放 P1IFG = 0; return; } } } //************************************************************************* // 主函数 //************************************************************************* void main(void) { WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 Port_Init(); //端口初始化 Close_LED(); //关闭数码管显示 _EINT(); while(1) //无限循环 { void pwm_sel(KEY_VAL); } } 然后就在最后的选择程序里报这个错 |
|
相关推荐
2个回答
|
|
while(1) //无限循环
{ void pwm_sel(KEY_VAL); } 把pwm_sel(KEY_VAL);前面的 void 去掉,你是调用函数,不是定义函数,不能加void
最佳答案
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3032个成员聚集在这个小组
加入小组2928 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3600 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2341 浏览 1 评论
4804 浏览 1 评论
2573 浏览 1 评论
1328浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3601浏览 2评论
2928浏览 1评论
1510浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 07:41 , Processed in 1.314165 second(s), Total 52, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号