2011-9-6 13:48
提问者:匿名 | 浏览次数:835次
我来帮他解答
2011-9-6 16:54
满意回答
应该是程序中出现了非ASCII码,造成无法编译。最常见的原因就是输入标点符号的时候,输入了全角字符,例如分号,逗号等,而在显示窗口中人眼很容易混淆,可编译器不会混淆。
向TA求助
回答者: ghost4063 来自团队 专注嵌入式领域 | 七级采纳率:52%
擅长领域: 其他编程语言 汇编语言
参加的活动: 暂时没有参加的活动
void main(void){
unsigned char state=0//状态
Gpio_Init()//端口初始化
Led_Init()//LED初始化
CLK_LSEConfig(CLK_LSE_ON) //打开 LSE 时钟
while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)== RESET)//等待 LSE 稳定
CLK_PeripheralClockConfig(CLK_Peripheral_BEEP, ENABLE)//使能 BEEP 外设时钟
CLK_BEEPClockConfig(CLK_BEEPCLKSource_LSE)//配置 BEEP 的时钟源为 LSE
while (1)
{
if( GPIO_READ(GPIOB,GPIO_Pin_0)==0){
switch(state){ //状态机,选择功能。
case 1:BEEP_Init(BEEP_Frequency_1KHz)//1KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_1()//LED 显示当前状态
LED2_0()
break
case 2:BEEP_Init(BEEP_Frequency_2KHz)//2KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_0()//LED 显示当前状态
LED2_1()
break
case 3:BEEP_Init(BEEP_Frequency_4KHz)//4KHZ 方波驱动BEPP
BEEP_Cmd(ENABLE)//使能输出 发声
LED1_1()//LED 显示当前状态
LED2_1()
break
default:state=0
break
}
}
LED1_0()//LED 显示当前状态
LED2_0()
delay_ms(1000)//延时,让用户听一会BEEP出声
BEEP_Cmd(DISABLE)//关输出
delay_ms(500)//延时,区分两个频率的声音
state++//下一个状态
}
}
自己写的一个小程序 ,拿走不谢
while语句的原型是while(表达式)语句,当表达式为非0值时,执行while语句中的嵌套语句。那么while(1)其中1代表一个常量表达式,他永远不会等于0。所以,循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止
while(i--)其中i是一个变量,因此表达式i--有不同的值,依次递减,i--是先取值后减,--i先加后取值,所以i--的值同未执行该自减运算时的i相等。因此当i为0时,循环会跳出
很容易混淆的是把i--的值误认为i执行自减后的值,可以编个小程序验证下
#include<iostream>
#include<stdlib.h>
using namespace std
int main()
{
int i=1
while(i--)//此时i=0
{
i--//执行该语句i为-1
break
}
cout<<i
system("pause")
}
输出为-1,说明执行了循环内i--的语句
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)