照书上设计了一个关于蜂鸣器发声的一个小程序,但是出现先一下错误,求高手解答。单片机初学者

照书上设计了一个关于蜂鸣器发声的一个小程序,但是出现先一下错误,求高手解答。单片机初学者,第1张

keil编译中出现 unprintable character 0xBB怎么办

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--的语句


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11552529.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存