你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

芯片从0地址开始跑,是不是随便写个函数在0地址就可以跑?

[复制链接]
beary 提问时间:2016-5-31 12:34 /
阅读主题, 点击返回1楼
收藏 评论15 发布时间:2016-5-31 12:34
15个回答
moyanming2013 回答时间:2016-6-1 11:28:00
haohao663 发表于 2016-6-1 09:36
STM32F1入门福利贴:基于HAL库/CubeMX软件的软硬件设计手册...
https://www.stmcu.org.cn/module/forum/forum.p ...

只要内核一样,那么启动部分就差不多少。
我看了@haohao663的手册,写的很详细,学习了。
我也写过一个关于启动代码的帖子,摘录部分解楼主的疑惑:
“MCU上电并从flash启动后,首先从向量表中取得第一个成员:栈顶指针,并赋值给MSP寄存器;然后再取得向量表中的第2个成员Reset_Handler复位异常,并赋值给PC寄存器,这样MCU根据PC寄存器的内容就开始了程序的执行。
如果你的程序只用汇编代码编写程序,那么Reset_Handler处就是你编程开始的地方。”
我解释下,楼主第一条语句指定一个栈顶指针或者干脆直接写0x00或者任意(假设反正你又不用栈操作),第2条令写flash的起始地址,然后在该地址处存放程序就行了(这个麻烦点,你需要写一个汇编代码,来指出你的程序),这就是最简单的程序。当然都得用汇编写。最终发现你需要一个“启动文件”,但启动文件也可以简化到最小,那就是只有栈的定义、栈顶指针、复位向量和复位函数中直接开始操作LED灯的程序代码。如果用C语言特性,就复杂了,还是得要一个完整的启动文件。完整的启动如下图简单所示:
3.jpg
具体参考我的帖子:
http://jingyan.eeboard.com/article/version_preview/2119
beary 回答时间:2016-6-1 11:30:39
haohao663 发表于 2016-6-1 09:36
STM32F1入门福利贴:基于HAL库/CubeMX软件的软硬件设计手册...
https://www.stmcu.org.cn/module/forum/forum.p ...

感谢感谢!!
cxd0812 回答时间:2016-6-2 10:20:46
beary 发表于 2016-6-1 09:18
嗯 我就是想问这个,他一开始是做向量表,向量表里有一个复位回调,回调函数跳到main,如果我那个复位的 ...

你这样做单片机没啥意见,应该能行,但编译器未必能给你通过,说不定编译器理解不了,给编译出来不是你想要的
Inc_brza 回答时间:2016-6-2 11:56:51
moyanming2013 发表于 2016-6-1 11:15
,我们看不到直播吃电脑了
对于存储器访问只能使用间接访问,直接写地址肯定不行。
...

不知道你想表达什么,我只知道这个代码能编译通过才有鬼,c语言都不及格!
yfy123 回答时间:2016-6-3 10:39:08
静静看着
beary 回答时间:2016-6-3 13:01:32
moyanming2013 发表于 2016-6-1 11:28
只要内核一样,那么启动部分就差不多少。
我看了@haohao663的手册,写的很详细,学习了。
我也写过一个关 ...

多谢!!
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版