_IO未定义?
/*主函数,用于闪烁led灯*/#include"stm32f10x.h"
#include"led.h"
void Delay(_IO u32 Count);
int main(void)
{
SystemInit();
LED_Config();
while (1)
{
LED(ON);
Delay(0xffffff);
LED(OFF);
Delay(0xffffff);
}
}
void Delay(_IO u32 Count)
{
for(Count;Count>0;Count--);
}
/*led.c文件,提供初始化stm32引脚*/
#include"led.h"
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//打开APB2挂载下的PA口时钟;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}
/*led.h文件*/
#ifndef _LED_H
#define _LED_H
#include"stm32f10x.h"
#define ON 1
#define OFF 0
#define LED(a) if(a) \
GPIO_ResetBits(GPIOC,GPIO_Pin_0); \
else \
GPIO_SetBits(GPIOC,GPIO_Pin_0);
void LED_Config(void);
#endif
编译后,说_IO为未定义符号。我用的是3.5.0的库,里面core_cm3.h有这个新类型定义的呀,还请大神指教!
编译环境呢 kebaojun305 发表于 2013-4-19 10:19 static/image/common/back.gif
编译环境呢
抱歉,编译环境是MDK4.14的,这个会影响? IAR最新版直接打开 3.5的库就有问题 是因为3.5的库中CMSIS中的文件版本是旧的最新的IAR不支持要自己更新下最新的CMSIS中的文件就可以了。MDK没有用过。 kebaojun305 发表于 2013-4-19 10:24 static/image/common/back.gif
IAR最新版直接打开 3.5的库就有问题 是因为3.5的库中CMSIS中的文件版本是旧的最新的IAR不支持要自己更 ...
谢谢你!这个新旧有关系么?定义都是有的啊,另外问问,这个延时变量一定是volatile么,我认为这个变量不会被其它情况改变的,应该可以不用吧? 本帖最后由 kebaojun305 于 2013-4-19 10:40 编辑
zamely 发表于 2013-4-19 10:28 static/image/common/back.gif
谢谢你!这个新旧有关系么?定义都是有的啊,另外问问,这个延时变量一定是volatile么,我认为这个变量不 ...
有关系是因为IAR不支持旧的定义格式。 volatile你要理解这个关键字的意义 用法就比较好理解了。
我现在可以使用的 CMSIS文件版本号:
也是在本论坛中下载的。
/**************************************************************************//**
* @file core_cm3.c
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
* @versionV2.00
* @date 13. September 2010
*
* @note
* Copyright (C) 2009-2010 ARM Limited. All rights reserved.
*
* @par
* ARM Limited (ARM) is supplying this software for use with Cortex-M
* processor based microcontrollers.This file can be freely distributed
* within development tools that are supporting such ARM based processors.
*
* @par
* THIS SOFTWARE IS PROVIDED "AS IS".NO WARRANTIES, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
这是3.5库里自带的版本号:
/**************************************************************************//**
* @file core_cm3.c
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
* @versionV1.30
* @date 30. October 2009
*
* @note
* Copyright (C) 2009 ARM Limited. All rights reserved.
*
* @par
* ARM Limited (ARM) is supplying this software for use with Cortex-M
* processor based microcontrollers.This file can be freely distributed
* within development tools that are supporting such ARM based processors.
*
* @par
* THIS SOFTWARE IS PROVIDED "AS IS".NO WARRANTIES, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/ 好像楼主说的那个符号是
void Delay(_IO u32 Count)
{
for(Count;Count>0;Count--);
}
里面的_IO u32 Count 这个_IO?
这个不是要两个短划线么? __IO! 自己给他定义一个。或者找到定义他的头文件 包含进去 volatile
页:
[1]