大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

玩转STM32(18)理解SetSysClock函数

前面理解SystemInit函数时,发现里面调用了SetSysClock函数,那么这个函数有什么用呢?里面的代码到底又干了什么事情呢?现在就来仔细地分析这个函数,以便掌握每一个细节,了解事物的来龙去脉。并且这个函数是用户必须了解的函数,为什么这样说呢?因为这个函数要设置CPU工作的频率,也就是说这...

2019-07-31 18:47:36

阅读数 750

评论数 0

玩转STM32(17)理解SystemInit函数

前面分析了复位函数,在那里发现它要调用SystemInit函数,那么这个函数是做什么用的呢?从名称上来看它就是系统的初始化函数。这个函数在复位之后,就要立即调用的函数,可见它是非常关键的底层函数,这个函数主要内容包括对系统时钟初始化(时钟源选择、锁相环设置、分频系数配置、AHB/APB的频率、FL...

2019-07-10 08:40:49

阅读数 108

评论数 0

玩转STM32(16)理解复位函数

前面搞定了栈顶的问题,接着下来,可以从复位矢量表里,看到如下: __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Hand...

2019-07-06 21:14:34

阅读数 132

评论数 0

玩转STM32(15)确定栈的位置和大小

前面学习了怎么样确定CPU加载运行第一行代码,在那里发现需要加载栈指针,那么你也许会问为什么要首先加载栈指针呢?难道栈就是这么重要?在这里,我们就来探讨一下栈的问题,比如栈的位置和大小。 在现代的CPU技术里,往往有中断系统,这就决定了CPU必须有栈的结构,因为中断出现时,需要把当时CPU运...

2019-07-01 17:24:10

阅读数 110

评论数 0

玩转STM32(14)运行第一行代码

前面学习了选择从那里进行加载代码,接着下来,我们将要了解CPU是怎么样运行编译的代码。通过前面的学习,我们知道通过编译器的编译,会生成可运行的代码,然后通过JLINK下载到STM32的FLASH里,再通过配置CPU的引导管脚,实现选择内部FLASH来加载代码。但是CPU是怎么样来加载代码,并运行的...

2019-06-27 11:55:13

阅读数 121

评论数 0

玩转STM32(13)存储空间的开始地址

前面学习了怎么样选择不同的储存器来加载代码,也就是运行代码,决定了从哪里开始运行的问题。但是CPU选择了储存器之后,还要知道代码是从存储器哪一个位置开始读取代码?也就是从哪一个地址开始读取代码?现在就来解决这个问题。我们知道32位的CPU有4G的地址空间,因此从哪一个地址里读取代码,就有很多的选择...

2019-06-20 17:08:57

阅读数 157

评论数 1

玩转STM32(12)代码存储空间的选择

前面了解了CPU怎么样拥有跳动的心脏,那么它拥有了开启自动化执行的生命之路。如果学习过CPU原理之类的硬件,就知道CPU在每一个脉冲信号之下,就向前运行一步,像168MHz频率的CPU,运行一步是很短的时间。不过CPU运行的原理是很简单的,可以设想纸带上有一些图案,比如圆、三角形、四边形,当这张纸...

2019-06-13 17:27:32

阅读数 141

评论数 0

玩转STM32(11)CPU的心跳历程

前面说CPU怎么样才有脉搏,也就是给CPU装了一个心脏,这样这个由泥沙组成的CPU才能开始拥有像生命的力量了。在前文后面,提到了使用25MHz晶振作为外部的频率来源,但是我们的目标是让CPU工作在168MHz的频率,这样才可以让CPU工作得更快,运行代码更快,效率更高。当然,如果你想让CPU工作在...

2019-06-06 18:25:12

阅读数 126

评论数 0

玩转STM32(10)CPU的脉搏

前面学习了怎么样下载程序到开发板, 并且可以运行起来,看到LED灯轮回地亮灭。你也许很好奇为什么LED会轮流地亮灭,像拥有生命一样,具有周期性地工作。要解决这个问题,我们得学习CPU的脉搏,那么什么是CPU的脉搏呢?其实CPU就是一堆泥沙和一些金属组成的,本身是不具备这种生命的特性,那么它周期性地...

2019-06-04 13:49:22

阅读数 112

评论数 0

玩转STM32(9)下载程序到Flash

前面介绍了怎么样设置JLink调试器,这样就架起了一座开发电脑与开发板之间的桥梁,有了这个桥梁,就可以把程序下载到STM32的CPU里了。那么样在软件上怎么样操作呢?在说软件怎么样操作之前,先强调一下,硬件要按前面的文章那样连接好,也就是JLink的JTAG接口与开发板的JTAG接口相连接,开发板...

2019-04-28 17:01:10

阅读数 145

评论数 0

玩转STM32(8)配置JLink调试器

前面已经介绍了怎么样编译项目,生成一个HEX文件,但是这个目标文件还是储存在电脑上,这样你辛苦写出来的代码,还是一个没有什么作用的文件,即使已经把开发语言变成了机器语言,也是无济于事的。那么怎么样才能把这个目标文件搬到STM32的CPU里面呢?这是有很多种方法的,比如采用STM32的烧写器;比如把...

2019-04-27 13:39:43

阅读数 142

评论数 0

玩转STM32(7)第一次编译

前面介绍了认识开发环境,当然你学习上面这些知识还不会进行编译一个项目的,那么你也许会急着想知道下一步怎么办?怎么样才可以把这个项目编译出来,或者烧写到开发板里进行测试。下面就来解决编译这个问题,编译原因在前面已经说过,就是把人类理解的语言转换为机器语言。在Keil的集成开发环境里,界面上主要有四个...

2019-04-26 13:08:04

阅读数 113

评论数 0

玩转STM32(6)初识编译环境

前面已经介绍了怎么样找到项目的工程文件,只要双击那个文件就可以打开整个项目工程,进入代码开发调试环境。在很多年以前,开发软件还是很困难的事情,因为那时候编译环境非常不友好,不是图形界面,而是基于文本的界面,并且还不是集成开发环境,是分离的。当你在编辑器里写了代码之后,然后再保存成文件,然后退出编辑...

2019-04-25 17:37:55

阅读数 113

评论数 0

玩转STM32(5)找到启动文件

前学习了目录分类的重要性,可以看到分为三个目录,那么你选择哪一个目录点击进入去呢?因为我们要打开项目工程,那么就需要找到开发工具的工程文件,因此就需要打开工程的目录Project,就是这个目录命名的原因。在这个目录下面放置所有与目录相关的文件,当你打开这个目录时,就可以看到目录大体如下: 在...

2019-03-16 20:42:52

阅读数 1855

评论数 2

玩转STM32(4)学会目录分类

前面已经知道怎么样来得到第一个嵌入式程序了,如果还没有下载相应的文件,请先要下载。下载完成之后,就可以把压缩文件解压出来,就会看到一个LED_001的目录。不过,仔细一些的人,也许会发现这个压缩包有点大,是的,是有12M大小。接着又会问为什么会这么大呢?像STC89C51的单片机工程很小的,才几K...

2019-03-15 19:48:57

阅读数 1473

评论数 0

玩转STM32(3)使用模板工程

前面学习了安装什么样的软件,这时就已经具备开发嵌入式软件的基本条件。只要把前面的开发板电源使用USB的电源线插入5V的电源,然后把JLink的USB插头插入到开发的电脑,硬件就已经连接好了。如下图这样连接起来: 在这里一定要注意使用电源供电,而不能使用JLink的供电,因为CPU和外围元件的...

2019-03-14 17:09:10

阅读数 253

评论数 0

玩转STM32(2)入门软件的基本条件

前面说了硬件的入门条件,现在就来学习一下软件的入门基本条件。我们知道要想跟外国人打交道,必须学习一门外语,才可以跟他们对话,进行沟通。同理,我们要跟STM32的CPU进行沟通,也需要学会一门外语,这门外语有很多选择,至于选择那一门外语,就在于你自己的喜欢和需要跟那一个国家进行沟通了。在外语方面有英...

2019-03-08 17:30:54

阅读数 275

评论数 0

玩转STM32(1)入门硬件的基本条件

2019年又快过去两个月了,大批大批的人员又出外寻找工作,大批大批的公司又在网上不断地招人,一个基本的嵌入式工程都能拿到万元的月薪,说明嵌入式开发的市场还在高速地发展,嵌入式的软件市场也在飞速地状大。由于嵌入式软件都是在设备里,相对PC软件来说更容易实现价值,即使软件非常简单,比如万行级别的软件就...

2019-03-02 13:30:44

阅读数 469

评论数 0

提示
确定要删除当前文章?
取消 删除