完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-12 11:26 编辑
用的是ccs4以上版本,在reset CPU后可以程序可以运行,而restart之后确不行,这是为什么? 另外一些全局变量是使用 MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart) InitFlash();这些函数之后就会初始化值发生变化;不知道是为什么?而不是用这句语句的话,delay_us()这个函数就不能使用,有高手帮我解答一下嘛? |
|
相关推荐
5个回答
|
|
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart)
上面这个函数的作用是将需要在RAM里运行的程序搬到RAM中,注意delay_us()就需要运行在RAM里。 InitFlash();的作用是初始化FLASH,否则你的FLASH的运行速度会慢很多。 |
|
|
|
linjun,
memcopy函数只是将flash中的代码复制到RAM中,iniflash是当程序是运行在RAM的时候,对flash的初始配置,特别是waitstate的配置。 另外一些全局变量是使用 MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart) InitFlash();这些函数之后就会初始化值发生变化; 你是指你的全局变量在使用memcopy函数后初始值会发生变化吗?正常来讲,我不认为会有这种情况发生,除非你copy的代码覆盖了全局变量所在的RAM地址。你需要查看一下page0 和 .ebss page1中的memory block有没有重叠。 Eric - ERIC |
|
|
|
guigui_7044 发表于 2018-6-11 05:32 改了下flash的块,就ok了,但是,restart跟reset这个问题还是没解决,restart之后提示:no sourse avaiable for c_int00() at 0x3f126f |
|
|
|
mapleasd 发表于 2018-6-11 05:52 linjun, no sourse avaiable for c_int00() at 0x3f126f c_int00是rts2800_ml.lib中的函数,你看不到库里面的源代码,所以有那个警告,这个没什么影响的。另外你通过设置debug选项,使得restart之后的入口地址为main或code_start也就行了。 Eric - ERIC |
|
|
|
guigui_7044 发表于 2018-6-11 06:04 谢谢您,我知道为什么了我restart不行了,是因为debug选项里面那个auto run to symbol里面restart这个选项没打勾。这里真不错,哈哈。 还有一个问题,我程序里有个pwm中断(10k),也就是100us的中断,然后我主程序for循环里面判断是否到10ms(或者100ms),如果到了运行一下显示程序; 10ms计时是通过100Us中断100次,置一个标志位;当我设置成10ms时,这个显示程序只运行10次,然后就老是跳到100Us中断程序里,一执行主程序 就跳到100us中断程序里;当我设置成100ms时,显示程序只执行一次; 给我的感觉是累积了很多100Us中断一样,pwm中断是不是在debug时自己计时的,而不会因为我单步停止而停止计时?是这样嘛? |
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
538 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
987 浏览 1 评论
584 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
461 浏览 1 评论
996 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-21 05:15 , Processed in 1.142616 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号