我的STM32学习之路(1)---STM32概述(Cortex-M3)

最新更新时间:2022-02-13来源: eefocus关键字:STM32  Cortex-M3  C语言 手机看文章 扫描二维码
随时随地手机看文章

一、STM32概述(Cortex-M3)


STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M0,M0+,M3, M4和M7内核,笔者目前要用的型号为stm32f103,内核为cortex-m3,以后有时间再写stm32f407相关文档吧。


对于这款处理器,打算从以下方面介绍。


1.处理器结构


Cortex‐M3 是一个 32 位处理器内核。 内部的数据路径是 32 位的, 寄存器是 32 位的, 存储器接口也是 32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。 这样一来数据访问不再占用指令总线,从而提升了性能。 为实现这个特性, CM3 内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成 8GB 了。

mark相关术语:instruction fetch unit 取指单元


                           decoder 译码器


                            trace interface 追踪接口


                            peripheral 外设


                           optional 可选择的(接口)


2.寄存器组


CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。 

(1)通用目的寄存器 R0-R7

R0‐R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。


(2)通用目的寄存器 R8-R12

R8‐R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32位的指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。


(3)R13 是堆栈指针,R14是连接寄存器(在调用子程序时存储返回地址),R15是程序计数器(因为 CM3 内部使用了指令流水线,读 PC 时返回的值是当前指令的地址+4。)。


(4)特殊功能寄存器

3.指令集


简单了解汇编语法即可。

 

4.总线接口


在小容量、中容量和 大容量产品中,主系统由以下部分构成:

● 四个驱动单元:

─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)

─ 通用DMA1和通用DMA2

● 四个被动单元

─ 内部SRAM

─ 内部闪存存储器

─ FSMC

─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备

图中几个总线的知识:

① ICode 总线:该总线将 M3 内核指令总线和闪存指令接口相连,指令的预取在该总线上面完成。

② DCode 总线:该总线将 M3 内核的 DCode 总线与闪存存储器的数据接口相连接,常量加载和调试访问在该总线上面完成。

③ 系统总线:该总线连接 M3 内核的系统总线到总线矩阵,总线矩阵协调内核和 DMA 间访问。

④ DMA 总线:该总线将 DMA 的 AHB 主控接口与总线矩阵相连,总线矩阵协调 CPU 的DCode 和 DMA 到 SRAM,闪存和外设的访问。

⑤ 总线矩阵:总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁,仲裁利用轮换算法。

⑥ AHB/APB 桥:这两个桥在 AHB 和 2 个 APB 总线间提供同步连接, APB1 操作速度限于36MHz,APB2 操作速度全速。


5.存储器映射


giveup

关键字:STM32  Cortex-M3  C语言 编辑:什么鱼 引用地址:我的STM32学习之路(1)---STM32概述(Cortex-M3)

上一篇:STM32的DMA多通道多数据AD转换
下一篇:STM32的外部中断EXTI

推荐阅读

C语言写一个看门狗程序测试
用STC的MCU的IO方式控制74HC595驱动8位数码管。用户可以修改宏来选择时钟频率.显示效果为: 显示秒计数, 5秒后不喂狗, 等复位.#define MAIN_Fosc 22118400L //定义主时钟#include "STC15Fxxxx.H"#define DIS_DOT 0x20#define DIS_BLACK 0x10#define DIS_ 0x11#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒u8 code t_display[]={ //标准字库// 0 1 2 3 4 5 6 7
发表于 2023-01-13
C语言写一个电容感应触摸键程序
使用STC15W408AS的ADC做的电容感应触摸键#include <reg52.h>#include <intrins.h>#define MAIN_Fosc 24000000UL //定义主时钟typedef unsigned char u8;typedef unsigned int u16;typedef unsigned long u32;#define Timer0_Reload (65536UL -(MAIN_Fosc / 600000)) //Timer 0 重装值, 对应300KHZsfr P1ASF = 0x9D; //只写,模拟输入选择sfr ADC_CONTR = 0xBC; //带A
发表于 2023-01-13
C语言写一个跑马灯程序
#define MAIN_Fosc 22118400L //定义主时钟#include "STC15Fxxxx.H"/********* 功能说明 ***程序使用P4.7 P4.6 P1.6 P1.7 来演示跑马灯,输出低驱动。********/void delay_ms(u8 ms);/******************** 主函数 ******************/void main(void){P0M1 = 0; P0M0 = 0; //设置为准双向口P1M1 = 0; P1M0 = 0; //设置为准双向口P2M1 = 0; P2M0 = 0; //设置为准双向口P3M1 = 0; P3M0 = 0
发表于 2023-01-13
C语言写一个驱动数码管程序
/****** 本程序功能说明 *****用STC的MCU的IO方式控制74HC595驱动8位数码管。显示效果为: 数码时钟。使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下, 用户修改MCU主时钟频率时,自动定时于1ms.*****/#define MAIN_Fosc 22118400L //定义主时钟#include "STC15Fxxxx.H"#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒#define DIS_DOT 0x20#define DIS_BLACK 0x10#defin
发表于 2023-01-13
C语言写一个温度测量显示程序
P1ASF = 0x0C;//P1.2P1.3做ADCADC_CONTR = 0xE0; //90T, ADC power onAUXR = 0x80; //Timer0 set as 1T, 16 bits timer auto-reload,TH0 = (u8)(Timer0_Reload / 256);TL0 = (u8)(Timer0_Reload % 256);ET0 = 1; //Timer0 interrupt enableTR0 = 1; //Tiner0 runEA = 1; //打开总中断for(i=0; i<8; i++) LED8[i] = 0x10; //上电消隐while(1){if(B_1ms)
发表于 2023-01-13
STM32学习日志——CAN通信实验
1、概述CAN是Controller Area Network的缩写,是ISO的国际标准化的串行通信协议。在当前的汽车产业中,有各种各样的电子控制系统,这些系统之间所用的数据类型及对可靠性的要求不尽相同。1986年电气商博世公司开发出面向汽车的CAN通信协议。现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐形电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。CAN的特点:多主控制。总线空闲时,所有单元都可以发送消息;最先访问总线的单元优先;同时发送看ID优先级。消息的发送。所有消息以固定的格式
发表于 2023-01-13

推荐帖子

哪个有嵌入式/单片机工程师面试试题和答案的?分享下
哪个有嵌入式/单片机工程师面试试题和答案的?分享下 哪个有嵌入式/单片机工程师面试试题和答案的?分享下
QWE4562009 单片机
DG128的3×3矩阵扫描求帮忙
DG128的3×3矩阵扫描求帮忙。这几天头都痛了。。。上拉电阻怎么用?3×3扫描程序失败好多次。新生求教。 DG128的3×3矩阵扫描求帮忙
quxiangyu NXP MCU
高频链中高频变压器的分析与设计
高频链中高频变压器的分析与设计摘要:高频链逆变技术用高频变压器代替传统逆变器中笨重的工频变压器,大大减小了逆变器的体积和重量。在高频链的硬件电路设计中,高频变压器是重要的一环。叙述了高频变压器的设计过程。实验结果证明该设计满足要求。关键词:高频链;高频变压器;逆变器MESPELAGE于1977年提出了高频链逆变技术的新概念。高频链逆变技术与常规的逆变技术最大的不同,在于利用高频变压器实现了输入与输出的电气隔离,减小了变压器的体积和重量。近年来,高频链技术引起人们越来越多的兴趣。高频链
zbz0529 模拟电子
电感线圈的用途:扼流,滤波,震荡
一,扼流:在低频电路用来阻止低频交流电;脉动直流电到纯直流电路;它常用在整流电路输出端两个滤波电容的中间,扼流圈与电容组成Π式滤波电路。在高频电路:是防止高频电流流向低频端,在老式再生式收音机中的高频扼流圈;得到应用。   二,滤波:和上述理论相同;也是阻止整流后的脉动直流电流流向纯直流电路由扼流圈(为简化电路,降低成本,用纯电阻替带扼流圈)两个电容(电解电容)组成派式滤波电路。利用电容充放电作用和扼流圈通直流电,阻挡交流电特性来完成平滑直流电而得到纯正的直流电。   三,震荡:
Aguilera 模拟与混合信号
《数字信号处理(全美经典学习指导系列)》
简介: 内容简介:   本书主要介绍数字信号处理的基础理论,并给出300多道解答步骤完整的习题。因而,本书是相关教材的有益补充,是自学有效问题求解方法的理想读物。   全书共9章,涵盖了数字信号处理导论教程的核心内容,包括数字信号处理的基础知识,离散时间信号的频域表示,采样离散时间信号的重要问题......每章均分为四部分,基本原理和方法精讲,习题与解答,补充习题以及答案。 内容截图: 目录: 第1章信号与系统 第2章傅里叶分析 第3章采样 第4章z变
tiankai001 单片机
Matter:为什么需要
不同公司生产的智能家居设备不一定能协同工作。 一个品牌的智能家居助手可能不适用于特定品牌的智能灯泡,这意味着您无法使用语音命令打开智能灯。 这给客户留下了两种选择,一种是选择单独最适合他们需求但不一定组合在一起的智能家居产品, 另一种是他们可以购买特定品牌的所有智能家居产品,以便所有设备在一个生态系统中协同工作。 例如,AppleHomeKit产品。 但是,Matter可以解决上述所有问题。 Matter认证的产品可以无缝地协同工作,即使它们来自不同的品牌。 这意味着,
btty038 RF/无线
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved