发 帖  
原厂入驻New
[问答]

【已结束】有奖问答活动第二期——单片机的这3个问题你都会了吗?

1724 单片机 STM32
分享
为了提升广大坛友识图阅图的技术水平,同时也为了增进各位电子发烧友间的技术交流,论坛即日起以周为单位推出【每周电路赏析有奖活动】每期活动将由张飞电子学院的老师随机选择单片机、电路设计、电源技术和电机控制这四个板块出题
本活动旨在通过对电子线路图的分析和回答有关问题,来展示自我、提升技能、掌握经验。
本周问答活动为单片机技术问答,参与回复即可查阅参考答案,欢迎各位电子发烧友一起交流学习
活动时间:2021.5.25-2021.6.1

活动流程:

每周一论坛相关管理人员会推出一款具有实际使用意义的电子线路图或问答,各位坛友可围绕该线路图进行工作原理分析和讨论,并回答针对该线路提出的问题。
在此同时,电子发烧友向广大坛友们征集每周电路赏析活动的题目,各位有什么好的电子线路图和问题也可以在回帖中一并晒出,论坛管理人员会从中选取有代表性的进行发帖讨论。
本活动每个论坛ID回帖次数不限,但灌水等恶意回帖形式不在此列!

奖励机制:
1、为了鼓励广大坛友积极参与到活动来,老师会对回帖中的电路原理分析详实或回答问题准确的坛友进行奖励,对最接近准确答案的回复奖励20积分(1名),优秀分析回复10积分(2名),每周每ID仅限一次奖励,每次根据回复内容奖励若干名。
2、凡上传电子线路图题目被采用的坛友,将收到论坛送出的30积分奖励(可同奖励1兼得)。
3、本活动会以月度为单位,选取3名参与讨论问题积极性高、技术水平过硬的坛友,每人奖励50元京东E卡

第二期讨论的问题如下:

1、STM32单片机是如何启动的?

2、STM32单片机是如何响应中断的?

3、在STM32单片机中,堆栈起什么作用?堆栈生长方向和定义位置有什么关系?
【参与回复即可查看参考答案】


游客
,如果您要查看本帖隐藏内容请回复


2
2021-5-25 11:45:53   评论 分享淘帖 邀请回答

相关问题

11个回答
2021-5-25 12:33:58 评论

举报

第一题: 编译程序时,程序自上而下线执行系统文件里的这些代码
11111.png
该段定义了向量表中的各个处理程序,
每个程序启动的时候是以PROC开始,以ENDP结束的。
第一个运行的是Reset_Handler处理函数,单片机启动时便是从这里开始执行的。
我们可以看到,除了ResetHandler之外,其他的函数都只有一个 比特,
这是一个空的跳转,相当于进了死循环,所以需要在外部定义相应的处理函数。
Reset_Handler函数首先执行函数SystemInit(系统初始化,里面需要配置好单片机的时钟之类的),完成硬件初始化工作,然后执行__main,建立C运行环境,并从中跳转到到用户定义的main()函数执行。
以上就完成了单片机的启动。


评分

参与人数 1积分 +20 收起 理由
elecfans短短 + 20

查看全部评分


该段定义了向量表中的各个处理程序,
每个程序启动的时候是以PROC开始,以ENDP结束的。
第一个运行的是Reset_Handler处理函数,单片机启动时便是从这里开始执行的。
我们可以看到,除了ResetHandler之外,其他的函数都只有一个 比特,
这是一个空的跳转,相当于进了死循环,所以需要在外部定义相应的处理函数。
Reset_Handler函数首先执行函数SystemInit(系统初始化,里面需要配置好单片机的时钟之类的),完成硬件初始化工作,然后执行__main,建立C运行环境,并从中跳转到到用户定义的main()函数执行。
以上就完成了单片机的启动。第二题 : 每个中断都是有入口地址的。程序在执行过程中遇到中断的时候,会先判断这个中断的类型,根据类型再到中断向量表中查找,找到之后,根据表中指明的地址,程序就跳到该地址开始执行代码。
所以我们在配置中断时,需要把我们需要中断执行的代码函数,写到对应的位置去。具体可以由ST提供的stm32f10x_it.c文件对比决定需要写入的位置。
    第三个问题 : 堆栈是进入中断的时候用到的,单片机一旦遇到中断请求,就会去处理中断,处理完后再回来处理主程序,这样就涉及到了一个问题,单片机要保存中断之前的信息,以便处理完后能够回到主程序中,单片机会在响应中断前,把单片机现在的指针地址(也就是处理完要返回的地址),以及一些必要的数据压入堆栈(没有这些数据,单片机处理完中断后就无法确定主程序的状态)。
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。对这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。


这么好的活动 ,大家积极参与,收获知识又有奖品拿
2021-5-27 16:35:05 评论

举报

我是来看老师答案的,每个人都有自己不同的解答方式
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。
2021-5-28 13:49:47 评论

举报

上电-芯片内部程序运行到0x8000000,然后继续运行应用程序
2021-6-2 16:51:45 评论

举报

上电-芯片内部程序运行到0x80000000,然后运行C语言程序
2021-6-2 16:52:25 评论

举报

积极参与!第一次参与,也不懂啊,请多关照!!呵呵
这么好的活动 ,大家积极参与,收获知识又有奖品拿
2021-6-9 19:39:17 评论

举报

知识点通俗易懂,谢谢楼主分享
2021-6-13 14:52:48 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表