近日使用iar for stm8的软件来调试stm8系列的芯片,使用timer定时器中断时发现一个问题,程序中timer定时器的中断入口如下
#pragma vector=ITC_IRQ_TIM1_OVF + 2
__interrupt void TIM1_UPD_OVF_BRK_IRQHandler(void)
{
/* 清除更新中断标记,这步不能漏掉,否则会连续进入中断程序 */
TIM1_ClearFlag(TIM1_FLAG_UPDATE);
//add your code here
}
我在
#pragma vector=ITC_IRQ_TIM1_OVF + 2 和 __interrupt void TIM1_UPD_OVF_BRK_IRQHandler(void) 之间定义了一个变量u16 min_cnt;
然后编译发现没问题,下载程序后程序就崩溃了,不能运行。将变量移出到#pragma vector=ITC_IRQ_TIM1_OVF + 2 这句话的上边,编译下载后没有问体,一个不能解释的问题,注意!
关键字:IAR编译 stm8 奇葩问题
引用地址:
IAR编译stm8出现的奇葩问题
推荐阅读最新更新时间:2024-03-16 14:32
STM8—STVD+Cosmic编译环境下查看代码的实际长度
下载“stvd代码大小显示工具” 将上面的软件放在COSMIC编译软件的安装目录 默认的是C:Program FilesCOSMICCXSTM8 打开一个stm8工程,右键选择stm8l工程名,在弹出的快捷菜单中选择Setting选项,在弹出的工程选项设置中找到post-build选项卡,在commands输入框中增加一行:size $(OutputPath)$(TargetSName).map 备注:size后面有一个空格,不然编译会报错; 重新编译(选择Rebuild All),即可显示出代码大小(代码大小单位Byte)
[单片机]
IAR由来以及全球首个8051 C编译器
选择为C做一个编译器是IAR公司成立之初的一部分成功。Pascal在当时也是一个选项,但是最终并没有被用于嵌入式研发中。 IAR公司诞生于这三个字母中后两个字母所代表的天才——Anders Rundgren先生——的嵌入式编程的满腔热情中。 “我给我的孩子命名为Pascal,但最终选择了C做第一个编译器,” Rundgren先生微笑着说。 IAR公司成立于1983年,而第一个C编译器是若干年以后的事情。在那些日子里,没有多少人相信C编程语言会有美好的前景,尽管如此,它与处理器不同部分直接通讯的能力是Anders Rundgren先生选择C的一个重要原因。 “这纯属运气,” Rundgren回顾往事时
[焦点新闻]
IAR FOR AVR 编译环境中优化要注意的问题
简介:本文介绍了使用IAR编写AVR程序时优化的问题。 在用IAR开发C程序时,开发环境提供了一个优化的选项,有4档,即None/Low/Medium/High。但在实际应用时要注意,不是什么情况下都可以进行优化,有时在没有优化时运行的代码,优化后则不能正常运行了。(这个现象在用WINAVR软件开发时更严重,本人就是因为觉得WINAVR这个问题比较严重才转到IAR环境的) 例如,下面的程序是让LED闪烁: #include ioavr.h //定义一个宏操作 #define _BV(x) (1 x) //定义LED对应的端口 #define LED 0 int main(void) { un
[单片机]
stm8环境搭建及编译第一个工程
准备: 开发软件:IAR for stm8 固件库:STSW_STM8069_STM8S和STM8A标准外设固件库 实验步骤 1.下载IAR for stm8 ,当进入到IAR官网时(点击上方IAR for stm8链接),显示界面大概如下: 把网页拖到最下面看到下图,点击 download a free trial 将会拉出一个下载按键,这个显示的IAR版本是最新的。本人目前看到的版本为3.10。 下载完成后,根据以往的方式进行安装,然后通过IAR破解工具将其破解。破解目前网上很多随便下载。当然本人自己也提供了下载链接 https://download.csdn.net/download/fangjiaze444
[单片机]
stm8 eeprom
void EEPROOM_Configuration(void) { FLASH_DeInit(); /* Define flash programming Time*/ FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); /* Unlock Data memory */ FLASH_Unlock(FLASH_MEMTYPE_DATA); } 写一位数据 FLASH_ProgramByte(0x4000,0xaa);//写0xaa数据到0x4000地址 读一位数据 read_data=FLASH_ReadByte(0x4000);//读取0x4000地址上的数据
[单片机]
STM8各时钟CLK_CCO口输出频率观察
注意:需要在选项字节里使能端口D0口功能为CLK_CCO 在ST-LINK/Option Bytes修改AFR2选项位: 这里需要注意的是,使用的时钟来源不是主时钟开关之后的,所以不需要时钟切换。 这里要使用CLK_CCO口输出波形,根据官方参考手册需要将CLK_CCO口配置成上拉输入或者推挽输出。 这边使用的是STM8s105K4最小系统板,所以使用PD0口作为CLK_CCO输出,这里设置PD0为推挽输出。 寄存器版: PD_DDR_DDR0=1;//配置PD0为输出模式 PD_CR1_C10=1;//配置PD0为推挽模式 PD_CR2_C20=1;//配置PD0输出最大为10Mhz 库函数版:
[单片机]
STM8单片机学习总结初步01
由于意外,接触了下STM8,之前主要使用STM32,在某些时候,确实觉得STM8使用更为方便; 虽然STM8是8位单片机,但其能支持主流外设,尤其值得一提的是自带的ADC和PWM,价格也是相当感人,约“1.20RMB/PSC”的价格,从节约成本的角度来说,不管是对研发还是公司而言,都是极大的诱惑,性价比算是相当高的;即使是初代的“51单片机”,与其对比,优势也并不大,但“51单片机”作为“入门级单片机”确实是“最佳选择”; 现在的主流“单片机”都已经支持使用“库”开发方式,一开始就使用“库”,在后期深入后,极可能会陷入“卡死”境况,由于不了解“bit操作”、“寄存器操作”,在后续“编写代码”时,难以做到“随心所欲”,可能实现某个简
[单片机]
主频仅16M的STM8有必要跑操作系统吗?
一、STM8有必要使用操作系统吗? 很多初学者好奇:STM8有必要使用操作系统吗? 这个问题其实没有标准答案,我用STM8裸机开发过项目,也在STM8的项目上跑过RTOS。 使用RTOS优点很多:多任务、方便项目功能扩展、代码维护等。缺点就是代码占用资源,如果运行任务较多,对于低频MCU实时性不是那么好。 具体要看项目实际情况:MCU资源情况、功能复杂程度、实时性等。 比如:通过UART通信,简单控制几个IO口,这种或许没必要跑RTOS。 当然,使用RTOS有哪些好处,可以参看我之前分享的文章: 到底该不该用RTOS,看完你就有答案了 二、STM8都支持哪些RTOS操作系统? 我找了下官方资料,共列举4种: 1.AtomT
[单片机]