单片机/MCUwilliam hill官网
直播中

短短

6年用户 6507经验值
擅长:RF/无线
私信 关注
[问答]

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

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

活动流程:

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

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

第二期讨论的问题如下:

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

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

3、在STM32单片机中,堆栈起什么作用?堆栈生长方向和定义位置有什么关系?
【参与回复即可查看参考答案】
游客,如果您要查看本帖隐藏内容请回复

回帖(22)

王栋春

2021-5-25 12:33:58
对单片机不熟悉
举报

帅气的小柿子

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


举报

帅气的小柿子

2021-5-25 21:44:05

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


举报

松山归人

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

麦田里守望者

2021-5-28 10:12:05
我是来看老师答案的,每个人都有自己不同的解答方式
举报

h1654155275.5748

2021-5-28 13:49:47
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。
举报

tianbeibei

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

tianbeibei

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

开心老板HappyDaddy

2021-6-3 13:55:48
积极参与!第一次参与,也不懂啊,请多关照!!呵呵
举报

hz2392

2021-6-9 19:39:17
这么好的活动 ,大家积极参与,收获知识又有奖品拿
举报

企鹅

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

jf_74283309

2021-7-8 17:08:23
每个程序启动的时候是以PROC开始,以ENDP结束的。
举报

thERain_99d

2021-7-22 17:44:06
6666666666666666666666666666666666666666
举报

SS

2021-7-23 11:15:54
1、看你从内部rom启动还是外部rom启动,设置boot0和boot1的状态,具体看STM32规格书,忘了
举报

电子小帅

2021-8-17 16:33:39
谢谢谢谢谢谢谢谢谢
举报

我的钱又掉了

2021-8-23 15:32:21
我是来看老师答案的,每个人都有自己不同的解答方式
举报

kankankan5

2021-8-24 09:59:03
学习一下
举报

jf_51963422

2021-9-7 17:31:41
看看。学习学习
举报

陈启军

2021-9-8 15:11:24
单片机的这3个问题你都会了吗?
举报

更多回帖

×
20
完善资料,
赚取积分