随笔分类 - stm32学习过程
摘要:modbus是工业设备通信中常用到的一种协议,一般做机械自动化的接触的比较多一点。在OSI(Open System Interconnection)模型中他是属于报文传输协议层,所以很多人在刚接触的时候会觉得疑惑搞不清232串口、485总线、以太网之间和modbus之间的关系,其实现在就可以说明...
阅读全文
摘要:一般在stm32工程使用keil编译之后,keil的build output栏目下面会出现如图所示的输出信息,其中会显示code 大小 RO-data、RW-data 、ZI-data的大小。一般别人不怎么会在意这个的大小。出于好奇我百度了下网上关于这些段的介绍,援引自http://mcuos.co...
阅读全文
摘要:我在想很多学习stm32的,和我一样是学生,当时问他为什么学习stm32他也不知道,我们所知道的就是各个论坛讨论stm32的很多,而我们很多人之所以学习stm32是很多的淘宝卖家做了大量的图片文字宣传,于是我们经不住诱惑就买了板子,然后我们就开始了我们的学习之旅。 在淘宝卖家的眼里有着齐全的入门资料是板子的最大的卖点,于是当我们拿到开发板的时候,我们可以什么都不用做,直接使用已经建立好的工程模板,或者我们想学习下的话就按照他们的教程拷贝几个文件然后添加下,然后我们就以为我们的stm32入门了,心中暗喜stm32不过如此,哈哈!其实这就是曾经的我,但是随着慢慢的学习一方面我们失去了兴趣,感觉..
阅读全文
摘要:如图是一张stm32的内存映射图,其中代码区是从0x0800 0000开始的,他的结束地址是0x0800 0000加上实际芯片的flash大小,他的ram的起始地址是0x2000 0000,然后结束地址依然是加上芯片实际的ram大小。
阅读全文
摘要:和stm32的GPIO相关的寄存器有(1)两个32位的配置寄存器(GPIOX_CRL,GPIOX_CRH)每一个IO占用4位,16个IO占用64位就是两个32为寄存器。其中CNF[1:0]是用来配置模式的,其定义如下MODE[1:0]是用来配置输入输出模式及输出模式下的端口速率的(2)端口输入数据寄存器(GPIOX_IDR)其中高16位是保留的,低十六位对应着16个IO口的数据位。(3)端口输出数据寄存器(GPIOX_ODR)其中高16位是保留的,低十六位对应着16个IO口的数据位。(4)端口位设置/清除寄存器(GPIOX_BSRR)其中的每一位的定义如下:(5)端口位清除寄存器(GPIOX_
阅读全文
摘要:CMSIS是Cortex Microcontrollor Software Interface Standard 的缩写,是ARM公司和芯片产商联合推出的一套软件标准,目的是为了加快软件开发速度。 CMSIS可以分为三层1.核内外设访问层 Core Peripheral Access Layer(...
阅读全文
摘要:一、 什么是位段和别名区是这样的,记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作,MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 ;这样就把P1口的第三个脚(BIT2)置0置1。而现在STM32的位段、位带别名区就为了实现这样的功能。它的对象可以是SRAM、I/O和外设空间。要实现对这些地方的某一位的操作。它是这样做的:在寻址空间(32位对应的地址空间为 4GB )的另一地方,取个别名区空间,从这个地址开始处,每一个字(32BIT)对应SRAM或I/O的一位。 这样,1MB SRAM 就可以有 32MB 的对应别名区空间,就是1位膨胀到
阅读全文
摘要:1. C语言是没有I/O的语言 C语言本身就是没有I/O能力的语言(毕竟C语言是高级语言嘛),是依靠函数模块来完成的。如printf()就是一个I/O函数,在编译时,编译器并不编译printf()函数,而把他留在链接(link)阶段由链接器来处理。 这样做的优点是: 提高了C编译器的可移植性。因为I/O与计算机的硬件关系密切,如果C语言本身具备I/O能力,那么在不同的计算机上,编译器就会因为I/O的差异而必须重新设计。如果把I/O功能从编译器中分离出来成为独立的函数,那么编译器就不必因为硬件的变化而修改,只需修改函数模块即可。并且I/O函数模块是单独存在的,因而修改工作大为简化。 2...
阅读全文