一、stm32最小系统
stm32最小系统组成如下:
1、电源模块,3.3V电源,需要用稳压器件,有时要用感容网络产生stm32所使用的模拟电源。
2、时钟模块,有源或者无源晶振,可以使用最高25MHz的有源晶振或者4-16MHz的无源晶振,常用的是外部8M无源晶振,负载电容可选22pf。
3、复位电路,RC复位或者独立IC复位,stm32的复位引脚内置有40k的电阻,可以外接0.1uf电容到地实现复位,并且可以增加复位按钮。当然复位电路大家
都习惯用个外部上拉,虽然这不是必须地,但如果能保证复位时间也完全没问题。
4、Boot选择,stm32有boot0和boot1两个引脚,用于配置系统启动方式,可以从片上闪存、系统存储器或者片内SRAM启动。从系统存储器启动可以使用固
化的bootloader实现程序从USART1加载。从片内SRAM启动,这个目前还没研究过,不过很感兴趣。
5、程序下载和调试接口,可以使用jtag接口实现下载调试功能,在空间受限的情况下,也可以使用USART1来加载程序。
二、stm32启动模式
1、BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
2、BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。ISP
3、BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。
三、开发工具
keil c51 针对51单片机系列。
keil MDK-ARM 针对arm开发(其中V5版本和V4版本有很大的区别,V5版本需要另外安装芯片包)。
四、存储器、寄存器
ARM内核中带有存储器,比如cortex-M4中带有4GB的存储空间。厂家或者用户可以用存储器对Flash、RAM、外设等进行地址分配,称作存储器映射。
给具有特定功能的内存单元取别名,这个别名就是寄存器,这个起别名的过程就是寄存器映射。
寄存器的地址=存储器的基地址+偏移地址
因为操作寄存器的地址很麻烦,所以对寄存器进行了C语言封装,方便开发。
五、编程开发
一般用的较多的是C语言和汇编语言(其他语言就不说了),有些初学者认为,C语言十分方便,完全可以取代汇编,其实不然。他们各有各的优点:
- C语言: 开发相对简单,适用于大型工程
- 汇编语言: 适用于小型工程或者一些特殊场合(要求性能、存储量、军事)。
所以一般来说,C语言嵌入式汇编的方式是一种比较好的编程方法。
’