关于stm32 的问题 其实就是程序的问题

#include"stm32f10x.h"ErrorStatusHSEStartUpStatus;voidDelay(vu8nCount);voidTURN_ON_LED... #include "stm32f10x.h"
ErrorStatus HSEStartUpStatus;
void Delay(vu8 nCount);
void TURN_ON_LED(u8 LED_NUM);
int main()
{
...

...

...
TURN_ON_LED(u8 LED_NUM);
Delay(0xFFFFF);
}

void Delay(vu32 nCount)
{
for(;nCount!=0;nCount--);
}

void TURN_ON_LED(u8 LED_NUM){
switch (LED_NUM){
case 0:
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
break;
case 1:
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
break;
case 2:
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
break;

default:
GPIO_ResetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
}
}

这段程序编译后有错误
..\main.(56): error: #159: declaration is incompatible with previous "Delay" (declared at line 51)

但是换成下边的就没错误了 为什么?
#include "stm32f10x.h"
ErrorStatus HSEStartUpStatus;
//void Delay(vu8 nCount);
void Delay(vu32 nCount)
{
for(;nCount!=0;nCount--);
}
void TURN_ON_LED(u8 LED_NUM);
int main()
{
...

...

...
TURN_ON_LED(u8 LED_NUM);
Delay(0xFFFFF);
}

void TURN_ON_LED(u8 LED_NUM){
switch (LED_NUM){
case 0:
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
break;
case 1:
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
break;
case 2:
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
break;

default:
GPIO_ResetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
}
}
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能化的发展。意法半导体致力于引领单片机技术和产品的创新,推动生态系统的建设,为用户提供满意的产品和技术服务。意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100…
百度网友cc57fb5
推荐于2018-02-28 · 超过19用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:40.9万
展开全部
就是说,你的函数声明写在了调用之后。这句话是说,你在51行调用了该函数,但是函数的定义却在159行。程序误把你的函数定义当做函数调用了,而把函数调用当做了函数声明。
解决方案:
1、在调用函数之前先声明;
2、将函数定义在调用之前。
意法半导体(中国)投资有限公司
2023-06-12 广告
嵌入式是同时包含软件和硬件的. 嵌入式一般都是给芯片写程序,这是软件. 但是写软件需要操作芯片的硬件资源,就需要查看硬件手册,这就是硬件 厉害的大佬还会根据芯片手册制作PCB,然后写代码,写驱动. STM32编程同时具有这两个特点,所以有软... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
初中本科毕业生
2012-09-17
知道答主
回答量:16
采纳率:0%
帮助的人:7.3万
展开全部
//void Delay(vu8 nCount);是把它注释了就好了嘛?
Delay(0xFFFFF);这个Delayfffff的nCount大于8位了

你注释之后 把void Delay(vu32 nCount)放在了main之前nCount就是32位的了,可以是FFFFFFFF一下的值,如果想main之前之声明,就把void Delay(vu8 nCount);换成void Delay(vu32 nCount);试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旷飞白002
2012-09-18 · TA获得超过613个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:252万
展开全部
..\main.(56): error: #159: declaration is incompatible with previous "Delay" (declared at line 51)

159行的声明和51行的声明一致。
函数的声明需要一致,参数的类型,返回值的类型,参数的个数都要一样。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dqluyanshu
2012-09-19 · TA获得超过541个赞
知道小有建树答主
回答量:496
采纳率:100%
帮助的人:333万
展开全部
你调用Delay函数时传递的参数是20位的(0xFFFFF)
你函数声明是八位的,当然会报错了
这么简单一错误,你都看不出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式