
程序编译时出现以下错误,实在不知道是什么原因,特向大家请教!
Error[Pe223]: function "assert_param" declared implicitly E:\涡街流量计\设计\板2\程序\dft02\\library\\src\\stm32f10x_nvic.c 351
Error[Pa045]: function "assert_param" has no prototype E:\涡街流量计\设计\板2\程序\dft02\\library\\src\\stm32f10x_rcc.c 500
Error[Pe223]: function "assert_param" declared implicitly E:\
| 涡街流量计\设计\板2\程序\dft02\\library\\src\\stm32f10x_rcc.c 530 |
| 第一你用了中文文件夹 第二没有定义assert_param这个函数 |
还有文件夹用中文对程序有影响吗?
库文件版本混乱,估计用错IARv5的文件了.
库文件版本混乱,估计用错IARv5的文件了.
Error[Pe020]: identifier "RCC_APB2Periph_GPIOC" is undefined
查看是否包含了头文件:#include "stm32f10x_rcc.h"
想改STM32F10X_MD为STM32F10X_HD,但是IAR530就是编译startup_stm32f10x_md.s文件,何解??
| 想改STM32F10X_MD为STM32F10X_HD,但是IAR530就是编译startup_stm32f10x_md.s文件,何解?? |
| 2009-6-16 15:18 |
| 编译那个文件和这个宏定义无关,你应该把STM32F10X_HD.s文件添加到你的工程中,并把startup_stm32f10x_md.s从工程中删除或设为不编译才行 |
Error[Li005]: no definition for "__program_start" [referenced from F:\\sd\\WORM_SD_MMC1\\WORM_SD_MMC\\Debug\\Obj\\stm32f10x_vector.o]
,这是我在做实验时出现的错误,有时候从别的地方拷贝个stm32f10x_vector.o覆盖掉原来的就可以,有时就不行,怎么回事呢这是?
再有,我想把一个数组定义在程序空间,在IAR环境下如何做呢?我用原来的 u8 code shuzu[]
| 的方式怎么不行呢?把code删掉就可以,忘各位高手解答下。 |
| code这个标志应该不能用了吧,应该是用 const 就可以完成 stm32f10x_vector.o 貌似应该是每次都从代码里面生成的吧,直接拷贝别的程序的文件,应该是不行的 | ||
| 你应COPY的是stm32f10x_vector.c这个文件,还有就是stm32f10x_vector.c在IAR4XX及IAR5XX下用的不一样,你在固件库下的工程模板中应找到它。 |
| o ,多谢解答,再有 uchar const tabe[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,00,0,0}; for(i=0;i<8;i++) { Lbytesend( i, 0, tabe,32); Lbytesend( i, 32, tabe,32); /* Rbytesend( i, 0, tabe,32); Rbytesend( i, 32, tabe,32);*/ } } 这个函数,在没有加const时编译是通过的,但是加了const时出现了这样的错误,Error[Pe167]: argument of type "unsigned char const *" is incompatible with parameter of type "unsigned char *" E:\网络模块\20090506试验\USE_LCD.C 188 这又如何解决呢? |
| 我写程序的时候,加入了库文件,stm32f10x_nvic.c这个文件,编译的时候就出现了错误,加入stm32f10x_pwr.c 同样出现编译错误,错误是 在这两个文件中有未定义的东西,这两个是下载下来的库文件,我都没有动过,怎么就出现了未定义呢 很纳闷。 附近就是编译错误的提醒 我去掉这两个文件,编译就正确了 |
下载次数:0
2009-5-16 19:27
| 打开stm32f10x_conf.h文件。 找到“//#define _NVIC”,把其前面的"//“号删除。 找到”//#define _PWR“,把其前面的"//“号删除。 |
| 思 | |
| 我找到了你说的这个地方 但是它前面没有 “//‘ 所以问题 还是没有解决 谢谢你的帮助 | ||
| 发表于 2009-5-17 15:25 | 只看该作者 问题已经解决 原因是没有包含文件《cortexm3_macro.s》这个文件,所以才会出现上述的未定义。 |
| 兄弟们,我下载了 论坛里的 24CXX的 豆皮的测试程序,只有.C 和 .H 文件,我直接用 豆皮的 IAR520的 LED 测试工程模板, 并把 i2c24c16.c i2c24c16.h 添加到 IAR的工程中,也把 stm32f10xi2c.c 添加到工程了,但编译的时候 一直提示 i2c24c16.c 里面用到的 参数未定义。 至此编译失败,卡住了。 把整个工程都传上来,帮我看看,会是哪里的问题? |
24cxx.rar (254.34 KB)
下载次数:16
2009-2-15 13:49
StmFans思蜕盟论坛
∙Linux各发行版本 优缺点 简介
| 收藏 分享 评分 | ||
| 回复 引用 订阅 报告 道具 TOP | ||
| benladn911 ∙发短消息 ∙加为好友 benladn911 当前离线 UID 16 帖子 33 精华 0 积分 97 基本分 57 分 技术分 4 分 阅读权限 10 在线时间 51 小时 注册时间 2008-6-30 最后登录 2009-9-1 木牌盟友 | 2楼 发表于 2009-2-15 13:49 | 只看该作者 附上图片: | |
下载次数:2
2009-2-15 13:49
下载次数:2
2009-2-15 13:49
| 思蜕盟淘宝销售处——迷你打铁铺 !豆皮、松鼠 开发板、仿真器、STM32全系芯片!欢迎光临! | ||
| 回复 引用 报告 道具 TOP | ||
∙发短消息
∙加为好友
__stm32f100__ 当前离线
UID
1538
帖子
170
精华
1
积分
1380
基本分
870 分
技术分
51 分
阅读权限
50
来自
www.haccom.com
在线时间
2 小时
注册时间
2009-1-10
最后登录
2009-4-2
银牌盟友
来自
| www.haccom.com | 3楼 发表于 2009-2-15 15:43 | 只看该作者 stm32f10x_conf.h 里面#define _I2C前面的注释符号去掉。 原帖由 benladn911 于 2009-2-15 13:49 发表 兄弟们,我下载了 论坛里的 24CXX的 豆皮的测试程序,只有.C 和 .H 文件,我直接用 豆皮的 IAR520的 LED 测试工程模板, 并把 i2c24c16.c i2c24c16.h 添加到 IAR的工程中,也把 stm32f10xi2c.c 添加到工程了,但编译的时候 一 ... stm32f10x_conf.h这是工程的一部分,也要复制过来。 如果使用了中断,stm32f10x_it.c和stm32f10x_vector.c也要复制过来。 [ 本帖最后由 __stm32f100__ 于 2009-2-15 15:50 编辑 ] |
| www.haccom.com AVR、MSP430、CC8051 、STM32 and STM8 ………… |
| 回复 引用 报告 道具 TOP | |
[原创专辑] 求教关于IAR中变量的问题-怀疑编译器
| 大家好!谢谢大家刚才的回答。我的设计思路是SysTick中断中使sendtime++,然后在主程序中判断每10次做一次操作。 我的原程序main.c的相关内容如下: u32 sendtime; u32 b1; u32 b2; int main(void) { #ifdef DEBUG debug(); #endif b1=b2=0; sendtime=0; Set_System(); Set_USBClock(); Led_Config(); Key_Config(); JoyStick_Init(); Interrupts_Config(); EK_ADC_Init(); USART1_Init(); USART1_Configuration(); SysTick_Init_start(); ADC_SoftwareStartConvCmd(ADC1, ENABLE); //USB_Init(); //while (bDeviceState != CONFIGURED); //USB_Configured_LED(); b1 = sendtime; while (1) { b2 = sendtime; if((b2-b1) > 10 )b1 = sendtime; } } 编译没问题,但是在单步调试过程中发现while(1)循环中的b2=sendtime根本不执行! 求救啊 |
银牌盟友
∙发短消息
∙加为好友
yanyu_stm32 当前离线
UID
1356
帖子
10
精华
0
积分
1085
基本分
445 分
技术分
分
阅读权限
50
在线时间
10 小时
注册时间
2008-12-31
最后登录
2009-6-8
银牌盟友
| 5楼 发表于 2009-2-12 14:06 | 只看该作者 IAR我刚刚用还需要大家指教! 我调试的过程中,在Disassembly窗口中的确发现是b2没编辑没了。 我最主要的问题是:如果我只在main程序中跟踪的话,在watch窗口中的sendtime,b1,b2就都是0. 如果我在stm32f10x_it.c的SysTickHandler中设置断点的话,会看到watch窗口中的sendtime变化,但b1,b2还是不变啊非常奇怪!我还是有弄不明白的地方! 附stm32f10x_it.c的SysTickHandler的部分代码: void SysTickHandler(void) { savetime++; sendtime++; if (savetime > 500) { savetime = 0; directionflag = FALSE; LCD_Clear(); LCD_Draw_ST_Logo(); } 。。。。以下省略 |
| 回复 引用 报告 道具 TOP | |
| yanyu_stm32 ∙发短消息 ∙加为好友 yanyu_stm32 当前离线 UID 1356 帖子 10 精华 0 积分 1085 基本分 445 分 技术分 分 阅读权限 50 在线时间 10 小时 注册时间 2008-12-31 最后登录 2009-6-8 银牌盟友 | 6楼 发表于 2009-2-12 14:09 | 只看该作者 还有一种可能:是不是我的变量声明有问题。 我在main.c中,声明了全局变量: u32 sendtime; u32 b1; u32 b2; 在中声明的外部变量: extern u32 sendtime; 目的是想中断程序能够使用main.c中的sendtime变量,不知道这样的声明方式是否正确? |
| 思蜕盟淘宝销售处——迷你打铁铺 !豆皮、松鼠 开发板、仿真器、STM32全系芯片!欢迎光临! | |
| binglin ∙发短消息 ∙加为好友 binglin (炳哥哥)当前离线 UID 4 帖子 5051 精华 14 积分 16863 基本分 11523 分 技术分 534 分 阅读权限 200 在线时间 1793 小时 注册时间 2008-6-26 最后登录 2009-11-12 思蜕盟后勤 | 8楼 发表于 2009-2-12 15:00 | 只看该作者 用 VU32 sendtime; b1及b2只在main里用,就无所谓呀。 在仿真时看不到变量的值,是很正常的事,记住C是编译程序,它不是解释性语言。 因为很多变量,有可能被优化与寄存器变量了,因此看不到的可能性是很大的。 |
| 回复 引用 报告 道具 TOP | |
∙发短消息
∙加为好友
catwill 当前在线
UID
1080
帖子
2498
精华
2
积分
57
基本分
4297 分
技术分
135 分
阅读权限
80
在线时间
330 小时
注册时间
2008-12-12
最后登录
2009-11-12
金牌盟友
| 9楼 发表于 2009-2-12 15:10 | 只看该作者 以前也怀疑过keil C51…… 后来研究keil的反汇编, 才发现它比我聪明多了…… | |
| 砖家级的水准…… |
| 回复 引用 报告 道具 TOP | |
| catwill ∙发短消息 ∙加为好友 catwill 当前在线 UID 1080 帖子 2498 精华 2 积分 57 基本分 4297 分 技术分 135 分 阅读权限 80 在线时间 330 小时 注册时间 2008-12-12 最后登录 2009-11-12 金牌盟友 | 10楼 发表于 2009-2-12 15:11 | 只看该作者 借个地方请教一下: IAR中如何自定义关键字? 比如 typedef unsigned char uint8 ; 如何让uint8 高亮/特殊颜色显示?? |
| 砖家级的水准…… |
| 回复 引用 报告 道具 TOP | |
∙发短消息
∙加为好友
yanyu_stm32 当前离线
UID
1356
帖子
10
精华
0
积分
1085
基本分
445 分
技术分
分
阅读权限
50
在线时间
10 小时
注册时间
2008-12-31
最后登录
2009-6-8
银牌盟友
| 11楼 发表于 2009-2-12 15:43 | 只看该作者 8楼的大哥,我知道b1,b2在main()里声明就可以了,而且实际b2都没什么意义,但我始终找不到为什么在main()里无法察觉sendtime的变化的原因。 |
| 回复 引用 报告 道具 TOP | |
∙发短消息
∙加为好友
yanyu_stm32 当前离线
UID
1356
帖子
10
精华
0
积分
1085
基本分
445 分
技术分
分
阅读权限
50
在线时间
10 小时
注册时间
2008-12-31
最后登录
2009-6-8
银牌盟友
| 13楼 发表于 2009-2-12 16:35 | 只看该作者 没有效果,不过我再用其它方法再试试,如果有结果再发上来,谢谢!!!! | ||
| 回复 引用 报告 道具 TOP | ||
| __stm32f100__ ∙发短消息 ∙加为好友 __stm32f100__ 当前离线 UID 1538 帖子 170 精华 1 积分 1380 基本分 870 分 技术分 51 分 阅读权限 50 来自 www.haccom.com 在线时间 2 小时 注册时间 2009-1-10 最后登录 2009-4-2 银牌盟友 来自 www.haccom.com | 14楼 发表于 2009-2-12 18:01 | 只看该作者 原帖由 catwill 于 2009-2-12 15:11 发表 借个地方请教一下: IAR中如何自定义关键字? 比如 typedef unsigned char uint8 ; 如何让uint8 高亮/特殊颜色显示?? 自定义关键字。 | |
下载次数:6
2009-2-12 18:01
| www.haccom.com AVR、MSP430、CC8051 、STM32 and STM8 ………… |
| 思蜕盟淘宝销售处——迷你打铁铺 !豆皮、松鼠 开发板、仿真器、STM32全系芯片!欢迎光临! | ||
| 回复 引用 报告 道具 TOP | ||
∙发短消息
∙加为好友
catwill 当前在线
UID
1080
帖子
2498
精华
2
积分
57
基本分
4297 分
技术分
135 分
阅读权限
80
在线时间
330 小时
注册时间
2008-12-12
最后登录
2009-11-12
金牌盟友
| 15楼 发表于 2009-2-12 21:48 | 只看该作者 谢谢楼上的~~~ 其实研究了一个下午的IAR手册,还是自己搞定了…… 需要自己建立个TXT文档! 不过无限鄙视自己的E文实力…… 说实在的,我人生的一半就毁在这该死的E文上了…… | |
| 砖家级的水准…… |
| 回复 引用 报告 道具 TOP | |
| yanyu_stm32 银牌盟友 ∙发短消息 ∙加为好友 yanyu_stm32 当前离线 UID 1356 帖子 10 精华 0 积分 1085 基本分 445 分 技术分 分 阅读权限 50 在线时间 10 小时 注册时间 2008-12-31 最后登录 2009-6-8 | 16楼 发表于 2009-2-13 10:27 | 只看该作者 今天程序测试已经通过了,结果如下: 1.许多变量不知道为什么无法监测到,无论是STEP运行还是用BREAK都一样,监视到的值始终是0。但程序运行的输出结果是正确的。 2.定义成vu32类型的变量在本程序中的确不能直接用,先赋值给一个u32变量再用就OK了。目前我还没搞清楚原因。 3.许多语句在汇编窗口中看似跳过了,实际上不是被编译器优化掉了,就是赋值已经在上面的语句中完成了,不会影响结果的。 总结:主要是我对IAR EWARM用的不熟,还要继续努力啊! 谢谢大家对我的帮助 [ 本帖最后由 yanyu_stm32 于 2009-2-13 10:29 编辑 ] |
| 思蜕盟淘宝销售处——迷你打铁铺 !豆皮、松鼠 开发板、仿真器、STM32全系芯片!欢迎光临! | |
| 报告 道具 TOP | |
| 被过滤广告 [入门求助] 很奇怪的一个链接错误,请教高手。 Keil下的一个错误: linking... .\\Obj\\STM3210E-EVAL.axf: Error: L6218E: Undefined symbol Read_CH_Dot (referred from main.o). 函数如此声明: void Read_CH_Dot(u32 GBCode,u8 *pFontTemp); 定位在下面有颜色行: int main(void) { u8 FontTemp[32] = {0}; while (1) { Read_CH_Dot(1, FontTemp); } } 不知道是什么问题,还请高手帮忙啊! | |
| 在使用IAR5.3 JLINK RDI调试,在退出调试时出现"c:\\program files\\IAR Systems\\Embedded workbench 5.4\\arm\\bin\\armlibsupport.dll":段已解除锁定。错误!!!请问这是为什么呢??? |
∙竞猜——NBA2009年总冠军是谁?
| 收藏 分享 评分 | ||
| 回复 引用 订阅 报告 道具 TOP | ||
| 2楼 发表于 2009-11-1 23:29 | 只看该作者 呵呵! 问题已经解决了! 需要在你的OPTION /LINKER/CONFIG 选项内 override defalut 方框内设置成为 $PROJ_DIR$\\stm32f10x_flash.icf 就 可以了! | ||
| 思蜕盟淘宝销售处——迷你打铁铺 !豆皮、松鼠 开发板、仿真器、STM32全系芯片!欢迎光临! |
| 【楼主位】 hhh_ccboy 电子白菜 积分:274 派别: 等级:------ 来自: | 今天试用窗口看门狗,本来是件很简单的事情,刚试的时候当然为了简单,就设置了在窗口中断中喂狗.后来发现,中断一直没有进入,结果系统不停复位.--已经确定是没有进中断.所以别问我中断函数是否有合理初始化. 当时,我的硬件初始化是这样的: //初始化时钟源 RCC_Configuration(); //NVIC NVIC_Configuration(); //初始化GPIO GPIO_Configuration(); 以上是CPU进入MAIN函数就调用的初始化(3.0的库)--初始化硬件之后的代码,我们先忽略. RCC_Configuration();中我还初始化了SYSTICK的中断. NVIC_Configuration();中,我初始化窗口狗的中断. 好了,就是这个初始化代码,我觉得都没什么问题,但窗口看门狗中断就死活没进.以为是其他问题吧,搞来搞去,最后折腾了1小时.试的没什么好试了,就把初始化代码改改顺序: //初始化时钟源 RCC_Configuration(); //初始化GPIO GPIO_Configuration(); //NVIC NVIC_Configuration(); 注意到,我其他代码是没有变的,这时候能进窗口狗中断了!WHY?我以为是不是GPIO上有些东西要弄?但后来看来看去,我的GPIO初始化都是对IO操作,没对其他任何东西操作.我又以为是不是RCC初始化后要延迟一段时间才能初始化NVIC,但加了超级长的延迟还是不行,最后我发现,只要这样: //初始化时钟源 RCC_Configuration(); //这里是GPIO什么都不要紧,只要这句先行!! RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //NVIC NVIC_Configuration(); //初始化GPIO GPIO_Configuration(); 上面这样就成功了,也就是说,RCC初始化后,我至少要允许一个内部外设的物理时钟,窗口狗的中断才有效,不然死活不进窗口中断!其他中断是否这样我没试,但肯定SYSTICK中断没有这个问题,因为RCC的时候就初始化了SYSTICK中断了. 别怀疑我窗口狗的初始化代码,因为那段代码只有几句话,而且其他代码不变,只要先允许一个GPIO的外设,就可以了. 如果不是我低级错误或者没有看清楚DATASHEET,那么这究竟是什么回事? 很简单的代码,大家有空可以试试,估计你们手上有板的都会有窗口狗例程,有空帮我试一下是不是真的这样 | |
| __________________________ 近来爱上STM32了. http://www.daxia.com/stm32/ | ||
| 2009-06-16,20:02:26 | 资料 邮件 | 编辑 删除 |
| 【1楼】 __STM32__ 积分:720 派别: 等级:------ 来自: | 你的系统里是否使能了其他中断? 初始化GPIO的目的是什么?可以去掉这部分吗? STM32固件库中有一个例子,可供参考。 | |
| 2009-06-16,21:30:54 | 资料 邮件 | 编辑 删除 |
| 【2楼】 hhh_ccboy 电子白菜 积分:274 派别: 等级:------ 来自: | 中断只有两个,一个是RCC初始化的时候利用库函数做了个SYSTICK的中断,第二个就是NVIC_Configuration()里面的窗口狗中断. 初始化GPIO是为了初始化我的按键和输出LED.因为系统至少要用些LED作指示才能知道看门狗是否生效的. 另外你说库里面有例子?不知道是哪里的. 我找过万利之类的板的例子,他们正好是初始化了GPIO再初始化NVIC的,所以没有这个问题. 我现在最希望的是,手上有板的人帮我试试这个效果.明显的就是:先初始化过GPIO(其实重点是至少要有一个片内外设使能),再设置窗口狗中断,就没问题.先设置窗口狗中断,再初始化GPIO,窗口狗中断就不会进去了--就好像没有初始化过NVIC一样~ | |
| __________________________ 近来爱上STM32了. http://www.daxia.com/stm32/ | ||
| 2009-06-16,21:55:21 | 资料 邮件 | 编辑 删除 |
| 【3楼】 hhh_ccboy 电子白菜 积分:274 派别: 等级:------ 来自: | 记着,我说的重点是: 要有一个片内外设使能---例如RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE),再初始化窗口狗中断,就没问题. 如果先初始化窗口狗中断,再使能一个片内外设,窗口狗中断就不会进入. 基本可以排除其他低级错误了,最好是这里的老大们有空试一下这个效果,看是不是真的是芯片的BUG. 当然即使是BUG,也是个很小的BUG,很容易就避开了,只是正好被我碰上吧~ | |
| __________________________ 近来爱上STM32了. http://www.daxia.com/stm32/ | ||
| 2009-06-16,21:58:51 | 资料 邮件 | 编辑 删除 |
| 【5楼】 loongsuns 李阿连 积分:534 派别: 等级:------ 来自:西安 | 这种问题我在单片机上遇到过,有些寄存器再写的时候有先后顺序,顺序不正确就不工作。我怀疑是有些寄存器在操作的时候会改变其他的寄存器设置,毕竟芯片不是咱设计的不了解。。 没人在意估计是别人没遇到过。 | |
| __________________________ ========================================================== 世界上最远的距离不是南极和北极,而是网通和电信。 ========================================================== | ||
| 2009-06-19,10:05:53 | 资料 邮件 | 编辑 删除 |
| 【6楼】 unsv 积分:99 派别: 等级:------ 来自: | 楼主说的完全是事实。我试过了!! | |
| 2009-06-24,11:59:54 | 资料 邮件 | 编辑 删除 |
| 【7楼】 unsv 积分:99 派别: 等级:------ 来自: | 楼主能发现这个问题 运气很好啊!! RCC_Configuration(); NVIC_Configuration(); 这两个函数之间只要使能任何一个时钟 或者只要初始化GPIO(注:初始化GPIO的mode即可),就可以进入wwdg中断。 ======================================================================================================== 为什么是这样呢?? 不知道 应该也没有人知道 国内 | |
| 2009-06-24,12:06:15 | 资料 邮件 | 编辑 删除 |
| 【10楼】 huike 积分:378 派别: 等级:------ 来自: | 我的I2C1接AT24CXX可以连续写,等待,连续读,接着再怎么等都不工作了。 STM32片内的外设真够折腾人的。 | |
| 2009-06-25,10:14:31 | 资料 邮件 | 编辑 删除 |
| 【11楼】 lut1lut 积分:2 派别: 等级:------ 来自: | LZ说的情况,我这里没有出现。 我就是用的FWlib3.0.0中WWDG的例子。只是按照LZ说的那样,把RCC_Config中的使能外设时钟都去掉,RCC_Config后直接就是NVIC_Config,然后才是使能GPIO时钟,以及配置GPIO。 无论调试状态还是脱机运行,运行正常,能够进入WWDG ISR,里面有toggle LED。 在调试WDG之类的外设时,需要注意的是: 1).调试时,在某个地方设置断点,比如我在WWDG的early wakeup ISR设置断点,(就是当counter的值=0x40时);在该ISR中,我toggle某个LED。要想调试时,能在该断点停下,需要设置DBG --> DBG_WWDG_STOP,可以在调试界面直接修改寄存器的值。否则断点停下来了,watchdog还在运行,用户看不到断点停下来的时候,就跑飞了。 2).在调试和watdog以及DMA相关的程序时,板子一上电,如果BOOT开关拨到从flash启动的。那么程序就开始跑起来,里面有watchdog,DMA的运行,可能会使得调试器不能把新程序再次下载到板子中。 一般的措施是,把BOOT开关拨到ram启动,然后给板子上电,这样内部程序不会自己跑起来,不影响调试器下载新程序。 但是!这个措施是针对FWLib2.0.3之前的。为什么呢?老的基于FWlib2.0.3及以前版本的例程中,NIVC_Config中,都有“NVIC_SetVectorTable(0x08000000, 0);”这句话,来指定异常/中断矢量表放在哪里。 而新的FWLib3.0.0的例程库中,NIVC_Config中没有这句,那么芯片会根据BOOT开关的启动方式,来作为异常/中断向量表放的地方。如果按照以上措施,把BOOT开关拨到ram,那么一旦中断发生了,就回到ram中取中断ISR的入口值,显然拿不到,这样程序就跑飞了。 不过没有关系,为了方便用户使用,新的FWlib3.0.0库,保留了"NVIC_SetVectorTable();"这个函数。不过不在 以上是针对IAR的开发环境。好像KEIL的话,BOOT开关必须要跟linker file匹配。即使用户设置了"NVIC_SetVectorTable();"也没用。 | |
| 2009-06-25,10:49:32 | 资料 邮件 | 编辑 删除 |
| 【12楼】 lut1lut 积分:2 派别: 等级:------ 来自: | To:10楼huike I2C的使用,有些技巧,可以参考21ic上资料 http://bbs.21ic.com/upfiles/img/20093/2009318145734823.zip | |
| 2009-06-25,11:06:19 | 资料 邮件 | 编辑 删除 |
| 【13楼】 hhh_ccboy 电子白菜 积分:274 派别: 等级:------ 来自: | 一段时间没来看看,原来还是有人关注的. lut1lut 用的是IAR?我用的是MDK,不过理论上应该和编译器无关吧. 关于看门狗中断进不了的判断,我也是有一个灯的,而且调试中,只要进入一次,灯就会亮,并且没有灭的程序.所以我的实验是可以充分证明系统没有进窗口狗中断的. 后来什么都不变,只把初始化GPIO放前面,就一切正常了~ lut1lut 同志的情况不知道是不是因为不同批次的芯片而不同呢?我的是103VC.还没有机会去深入试N种系列,因为这个问题也并不是什么大问题,自己知道有这么一回事就好了呵呵. 说不定再拿一批芯片回来就没有这个BUG了~ | |
| __________________________ 近来爱上STM32了. http://www.daxia.com/stm32/ | ||
| 2009-07-03,14:30:02 | 资料 邮件 | 编辑 删除 |
| 【14楼】 __STM32__ 积分:720 派别: 等级:------ 来自: | 如果楼主说的问题确实存在,应该是逻辑设计的问题,而逻辑设计的问题与批次无关。 理论上与编译器的关系较大,有可能因为优化的需要,编译器改变了指令的执行顺序。 哈哈,我的分析与13楼的结论刚好相反。 | |
| 2009-07-03,14:47:27 | 资料 邮件 | 编辑 删除 |
| 【17楼】 conter 积分:35 派别: 等级:------ 来自: | GPIO初始化后是不是要过一会才能向IO写数据的? 我的顺序是: RCC_Config(); //时钟初始化 LcdInit(); //液晶屏初始化 NVIC_Config(); //中断向量表初始化 3.1的库,结果是写屏的时候,居然少写了一个字,但是我单步执行的时候,又全显示出来了..... |
