一、IAR中的重复定义问题
在自己写头文件时,要记得将常量定义在.c文件中,如果将常量定义在.h文件中,当在main.c或者其他地方包含该头文件时,会将头文件中的常量定义包含到main.c中,同时,相应的.c文件也有该常量定义语句,就会导致linker报错,有xxxx重定义(redefined)。此外,当要在main.c中使用其他.c文件中定义的量时,要记得+ extern+ <类型>+<+变量名>。
标准的做法:在.h文件中声明变量,在一个.c文件中定义变量,其它.c文件要用到变量只要包含.h头文件,相当于变量声明,就可以引用其它.c文件中定义的变量了。一般只在头文件中声明变量,在原文件中定义变量,即使你在头文件中使用了预编译指令 #ifndef…. #define … #endif,也不能在头文件中定义变量。不能定义,必须声明。
二、程序溢出问题(Error[Lp011]问题)
Error[Lp011]: section placement failed: unable to allocate space for sections/blocks with a total estimated minimum size of 0x2ba9 bytes in <[0x008000-0x009fff]>
原因:将library改为由full改为normal,一下子空间减少很多,还有printf和scanf的格式都由full改为small,不过这里不能用printf了。
(total uncommitted space 0x1f80).
11 971 bytes of readonly code memory
915 bytes of readonly data memory
726 bytes of readwrite data memory
Errors: 1
CPU:STM8S103F3P,它有8K FLASH[0x008000-0x009fff],有1K RAM,实际提示的FLASH大小为10582+809>8192
[0x008000-0x009fff]=8192,0x1f80=8064
0x3180=12672, 0x1f80=8064, 11971+915=12886
8s207就没有问题,换成103问题就溢出。
相关讨论:
http://www.amobbs.com/thread-5516889-1-26.html
http://www.amobbs.com/thread-5516388-1-1.html
http://www.amobbs.com/thread-5526431-1-1.html
http://www.amobbs.com/thread-4181924-1-1.html
三、 Error[Pe169]: expected a declaration
答:多了}右大括号。
四、PL2303上电后鼠标乱动的解决办法:
1,重新上电,因为我们开发板带了一键下载电路,所以第一次上电,会引起几次(3~6次)MCU复位,很正常. 你不要每次都按电源键来实现复位,就不存在这个问题了.
2,因为你的例程,一上电,就通过串口输出数据了,而此时CH340还在和电脑通信,CH340在和电脑USB连接建立的时候,收到数据,就可能导致你的串口不被识别为串口,而被识别为什么ball之类的设备,从而鼠标乱飞.
解决办法:
上电之前,先按住MCU的复位,然后再上电.等10秒钟左右,再释放复位.就一切OK了.
关键字:STM8S IAR程序 常用错误
引用地址:
STM8S与IAR程序常用错误
推荐阅读最新更新时间:2024-03-16 16:04
STM8S-独立看门狗的应用
在编写程序时有时会出现死机或程序跑飞的情况,这时对系统有一定的影响,怎样让程序可以自行重启呢,STM8S中的看门狗就是实现这一功能的,用看门狗检测程序的执行,在看门狗的复位时间内进行喂狗,如果程序在某个地方出现问题,那么就不能及时的进行喂狗,这时系统就会重新启动,达到检测的目的。通过观察小灯的闪烁快慢可以看出系统是否复位。 程序如下: //软件环境:IAR FOR STM8 V1.0 //作者:Nicole //功能:STM8的独立看门狗应用 //日期:2010.11.04 #include iostm8s105c6.h #include stdio.h unsigned int i; //时钟配置 void CLK_C
[单片机]
STM8S的TIM1 PWM设置(寄存器版本)
1. 概述 脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。 2. 芯片资料 参考STM8S datasheet如下资料: 在TIM1_CCMRi寄存器中的OCiM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCi输出通道产生一路PWM。必须设置IM1_CCMRi寄存器的OCiPE位使能相应的预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数模式或中央对称模式中)。 由于仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设
[单片机]
STM8S时钟配置CLK_HSIPrescalerConfig与CLK_SYSCLKConfig区别
//CLK_SYSCLKConfig通过CLK_Prescaler值的最高位来区分是配置HSI分频,还是CPU分频的。这个函数有两个功能。 //而CLK_HSIPrescalerConfig是直接配置HSI分频的,CPU分频配置成1 //配置内部时钟,直接调用 CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler); 一个函数即可 /* Clock divider to HSI/1 */ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); // 只配置HSI分频率,CPU分频率1 /* Configure th
[单片机]
stm8s开发(八) IIC的使用:IIC主机通信!
前面讲过两个常用的串口,UART和SPI,这次这次讲解一下另一个常用的串口:IIC(I2C)通信 科普IIC:一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。 通信过程: 主模式时,IIC接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。起始条件和停止条件都是在主模式下由软件控制产生。 从模式时,IIC接口能识别它自己的地址(7位或10位)和广播呼叫地址。软件能够控制开启或禁止广播呼叫地址的识别。 数据和地址按8位/字节进行传输,高位在前。跟在
[单片机]
STM8S开发环境搭建IAR For STM8
/* ********************************************************************************************************************************** * Name : STM8S开发环境搭建IAR For STM8 * Author : MingMing * Release : 2013/12/29 * Update : 2013/12/29 * E-mail : clint.wang@foxmail.com ****************************************************
[单片机]
STM8程序在IAR中报错 unable to allocate space for sections
Error : section placement failed: unable to allocate space for sections/blocks with a total estimated minimum size of 0x2298 bytes in (total uncommitted space 0x1f80). Error while running Linker 虽然不知道是为什么超过了,但是解决了; 我把Option--C/C++ compile--Optimizations中的Level选为High就好了
[单片机]
三分钟看懂stm8s单片机实现多通道转换
今天在使用stm8s单片机的AD功能,单片机上有AN0到AN9十个通道。想只用其中的三路AN5到AN7。 //ADC初始化 void ADC_Init(void) { ADC_CR1 = 0x50; ADC_CR2 = 0x38; ADC_TDRL = 0xE0;//禁止施密特触发 } unsigned int Read_ADC_Temp(unsigned channel) { unsigned int i,ADtemp; ADC_Init(); //ADC_CSR = 0x00; ADC_CSR = channel; ADC_CR1 = 0x01;// CR1寄存器的最低位置1,使能ADC转换 for(i = 0;i 《 3
[单片机]
基于IAR集成开发平台的ARM程序设计方法
摘 要: 本文主要介绍了在不加载操作系统的情况下,如何使用IAR软件平台进行基于ARM的嵌入式系统开发,包括了底层驱动、I/O控制,中断控制等程序设计。 /script script src="/ASNew/Include/A_Service.asp?AS_PID=10" /script
关键词: 嵌入式系统;IAR;ARM;中断控制
引言
在项目开发,特别是中小型项目开发中,为了降低开发难度和开发成本,常选择不加载操作系统的方案。本文选择IAR嵌入式开发平台,在不加载操作系统的前提下,使用C语言(约95%)和汇编语言(约5%),对以ATMEL公司的AT91M40800芯片(ARM7TDMI
[嵌入式]