存储器
Cortex‐M3 32位处理器,可寻址空间大小为 4GB,被划分为若干区域。
Cortex-M3存储器预设.PNG
Cortex‐M3存储空间划分.PNG
stm32RCT6存储器映射.PNG
STM32的位段、位带别名区就为了实现这样的功能。只不过他是为需要操作的地址(1字节)的每一个位(共8位)起个别名,分别对应别名区的一个字(word)。也就是别名区的大小是Bit Band的32倍。这样,32MB的别名区地址的操作,就是对相应Bit Band区的位的操作。Bit Banding功能是相对于以往能够进行bit操作的单片机而言的。
片内外设
stm32系统内部结构.jpg指令总线(ICode Bus)数据总线(DCode Bus)系统总线(System Bus,S-Bus)
异常与中断
Cortex-M3的内核编号1-15为系统异常,大于等于16的为外部中断。 异常分为不同的优先级,优先级的数值越小,优先级越高。 CM3支持中断嵌套,使得高优先级异常会抢占低优先级的异常。当系统发生异常并要响应该异常的时候,CM3要定位其服务例程的入口地址,这些入口地址就存在向量表中。缺省时,默认位于零地址,各向量占用4字节,故各表项占用4字节。有三个系统异常:复位、NMI、以及硬fault。它们优先级固定且都是负数,使得它们优先级最高。其余的异常的优先级都是可编程的。
内部中断.PNG
其他中断.PNG
编程知识(不熟悉)
-
位操作
位操作.PNG - extern 申明函数在外部定义
MDK5
在桌面新建一个 TEST 的文件夹,然后在 TEST 文件夹里面新建 USER 文件夹,将工程名字设为 test,保存在这个 USER 文件夹里面,选择芯片的型号(安装对应器件的pack)。根据芯片容量添加启动文件。(小容量:FLASH≤32K、中容量:64K≤FLASH≤128K、大容量:256K≤FLASH)。 STM32F103RCT6,FLASH 容量为 256KB,属于大容量产品,选择 startup_stm32f10x_hd.s 作为启动文件。
编译后,MDK5会生成一些中间文件。在 TEST 目录下新建一个新的 OBJ 文件夹来存放这些中间文件。
把系统代码 COPY 过来(该文件夹由 ALIENTEK 提供),添加文件到IDE。设置输出路径(生成HEX文件)
加入头文件路径.PNG
图中 1 处,我们必须根据所用 STM32F1 型号的容量,来输入相关宏定义,对于 STM32F103 系列芯片,设置原则如下:
16KB≤FLASH≤32KB 选择:STM32F10X_LD
64KB≤FLASH≤128KB 选择:STM32F10X_MD
256KB≤FLASH≤512KB 选择:STM32F10X_HD
因为 MniSTM32 使用的是 STM32F103RCT6,FLASH 容量为 256KB,所以,这个设为:STM32F10X_HD。
图中 2 处是编译器优化选项,有-O0~-O3 四种选择(default 则是-O2),值越大,优化效果越强,但是仿真调试效果越差。这里我们选择-O0 优化,以得到最好的调试效果,方便开发代码,在代码调试结束后,大家可以选择-O2 之类的优化,得到更好的性能和更少的代码占用量。
图中 3 处,One ELF Section per Function 主要是用来对冗余函数的优化。通过这个选项,可以在最后生成的二进制文件中将冗余函数排除掉,以便最大程度地优化最后生成的二进制代码,所以,我们一般勾选上这个,这样可以减少整个程序的代码量。然后在 Include Paths 处(4 处),点击 5 处的按钮。在弹出的对话框中加入 SYSTEM 文件夹下的 3 个文件夹名字,把这几个路径都加进去(此操作即加入编译器的头文件包含路径,后面会经常用到)。
仿真设置
Debug选项.PNG Target选项.PNGDialog DLL 分别为:DARMSTM.DLL 和
TARMSTM.DLL,Parameter 均为:-pSTM32F103RC,用于设置支持 STM32F103RC 的软硬件
仿真(即可以通过 Peripherals 选择对应外设的对话框观察仿真结果)。最后点击 OK,完成设置
下载设置
STM32F103 的程序下载有多种方法:USB、串口、JTAG、SWD 等,这几种方式,都可以用来给 STM32F103 下载代码。不过,最简单也是最经济的,就是通过串口给 STM32F103 下载代码。
FlyMcu设置.PNG
编程前重装文件,该选项也比较有用,当选中该选项之后,flymcu 会在每次编程之前,将hex 文件重新装载一遍,这对于代码调试的时候是比较有用的。选择的 DTR , 的低电平复位,RTS 高电平进BootLoader,这个选择项选中,flymcu会通过 DTR 和 RTS 信号来控制板载的一键下载功能电路,以实现一键下载功能。如果不选择,则无法实现一键下载功能。这个是必要的选项(在 BOOT0 接 GND 的条件下)。
在线调试
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 JLINK、ULINK、STLINK等就可以实时跟踪程序,从而找到程序中的 bug。
Debug设置.PNG
settings设置.PNG
Flash编程器选择.PNG
flash算法设置.PNG
网友评论