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

发布者:Huayu8888最新更新时间: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

推荐阅读最新更新时间:2024-11-10 16:37

STM32学习笔记:SysTick时钟
SysTick时钟,俗称“嘀嗒定时器”,它能按固定的时间产生一次中断,通常是多长时间产生一次中断呢?官方给出的一个时间是1ms 那么,它是怎么准确的产生1ms的呢.. 先来看看这家伙在时钟树的哪里吧 它是由HCLK/8得到的,也就是:72MHz/8=9MHz。 我们还能在STM32手册上找到这么一句话:系统嘀嗒校准值固定位9000,当系统嘀嗒时钟设为9MHz,产生1ms时间基准. 让我们来看看9000是怎么来的,这里要看下SysTick寄存器的配置了: 可以看到SysTick共有4个寄存器. 注意看上面的CTRL寄存器的CLKSOURCE位(时钟源位),它有两个选择,一个是
[单片机]
<font color='red'>STM32</font>学习笔记:SysTick时钟
STM32 串口DMA发送
一般情况下串口发送数据的完全不需要用到DMA,只有在处理器非常繁忙的时候,使用的DMA帮忙发送的就可以减轻处理器的负担。 下面就讲讲怎么使用DMA发送串口数据。还是基于我自己的标准工程。 1、工程的修改 1)这里要用到DMA,必须使用到库文件stm32f10x_dma.c,所以将是stm32f10x_dma.c文件添加到STM32F10x_StdPeriod_Driver工程组中。 2)打开stm32f10x_conf.h文件,将原先屏蔽的: #include stm32f10x_dma.h 语句的屏蔽去掉。 3)新建DMATx.c与DMATx.h两个文件分别保存到BSP文件夹下的src与inc两个文件中。并将DMATx.
[单片机]
剑杆织布机单片机C语言程序
#include reg52.h #include intrins.h sbit P3_7=P0^6; // 点动按钮 sbit P3_6=P0^5; // 单梭按钮 sbit P3_5=P0^4; // 启动按钮 sbit P3_4=P0^3; // 停止按钮 sbit P3_3=P2^6; // 经停信号输入 sbit P3_2=P2^7; // 纬停信号输入 sbit P3_1=P3^1; // 加 指示灯 sbit P3_0=P3^0; // 减 指示灯 //sbit P2_7=P2^7; // //sbit P2_6=P2^6; // sbit P2_5=P2^5; //
[单片机]
STM32 串口之中断接受
使用STM32串口的中断方式接收数据,接收来自另外一板子的按键数字,同时点亮相应的LED灯。 工程结构图: 1、 main.c代码截图如下; 2、其中的LED代码与另外一篇《STM32 基于库函数控制按键蜂鸣器 LED显示》代码完全同。这里就不上了。 3、USART驱动部分: #include stm32f10x.h #include usart1.h #include #include //===================================================
[单片机]
STM32位带操作详细介绍
前言 //在STM32中,如果我们要使PB0端口输出低电平,可以用如下语句 GPIOB- ODR |= 0 0; //在51单片机中我们是这样的 P0 = 0xff; //总线操作 //还有一种方法 sbit LED1 = P0^0; LED1 = 0;//位操作 在STM32中能不能实现位操作呢,当然是可以的,这种方法我们叫做位带操作。位操作就是可以单独的对一个比特位读和写。 1.位带简介 在STM32中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有自己的位带别名区,位带别名区把这 1MB 的空
[单片机]
<font color='red'>STM32</font>位带操作详细介绍
STM32 SPI硬件模式
反复试验,发现SPI_NSS引脚的自动硬件控制与想象的不同,无论是否外加上拉,只要一使能SPI,SPI_Cmd(SPI1, ENABLE); SPI_NSS引脚就一直处于低电平,直到SPI_Cmd(SPI1, DISABLE);这个需要用程序来控制。 而用过其他芯片则是发送完成自动会拉高,这点是要注意的 我说的就是做主机的时候 SPI_SSOutputCmd(SPIx,ENABLE) 在soft模式时这句话有必要吗?我的理解是当hard模式,需要multimaster的时候,才应该要开启这个output功能,这点从我的截图上可以看出。 我觉得,这里只要把SPI_InitStructure.SPI_NSS = SPI_NSS_So
[单片机]
<font color='red'>STM32</font> SPI硬件模式
STM32驱动舵机
舵机控制原理: 提供周期为20ms的pwm信号,调节pwm的占空比为0.5ms-2.5ms可使舵机从0-180度线性变化 舵机控制程序: 首先我们要利用stm32定时器产生合适周期的pwm输出信号,这里使用的是PWM高级定时器1的CH1(即PA8),可以通过配置输入参数arr和psc产生合适的频率的pwm脉冲信号。 //高级定时器1pwm输出初始化 //arr:自动重装值(周期) psc:时钟预分频数 void tim1_pwmInit(uint16_t arr, uint16_t psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeD
[单片机]
STM32滴答时钟源的问题
#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)24000000U) /*! Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ HSE_VALUE 值的大小决定了,时钟滴答的周期。 这个值的设置不会影响主频的时钟周期以及相关timer的变化。 __weak uint32_t HAL_RCC_GetSysClockFreq(void) { uint32_t pllm = 0U, pllvco = 0U, pllp = 0U; uint32_t sysclockfreq = 0U
[单片机]

推荐帖子

【小华工规级高性能MCU-HC32F4A0开发板】03.LCD显示、电容触摸与ADC
本篇主要分享一下LCDTFT显示、GT911电容触摸与ADC采样的功能演示,我们使用的是4.3英寸的TFTLCD液晶显示屏,它是一个并口屏,内置驱动为NT35510;通过HC32F4A0的EXMC外部存储器控制器接口完成对LCD屏的读写操作,通过硬件I2C接口完成对电容触摸芯片GT911的状态和触摸坐标位置的读取,通过ADC外设完成对板载可调节变阻器的ADC值采集和对应电压的换算,并ADC采样结果显示在LCD液晶屏幕上,并实时动态显示ADC曲线图对于在LCD上显示字符的解决方案,
xld0932 国产芯片交流
怎么进行软件仿真
按照坛友的教程,过程一模一样,为什么最后软件仿真时,下载之后没有弹出软件仿真图形界面,请问怎么把它调出来啊,有什么东西要弄的吗怎么进行软件仿真话说是什么仿真软件? 用的CS+用的CS+,选择R5F100LE,写的是最简单的LED闪烁例程,就是出不来软件图形仿真界面,点运行时,右下方有个绿色的“RUN”在滚动 用的CS+,选择R5F100LE,写的是最简单的LED闪烁例程,就是出不来软件图形仿真界面,点运行时,右下方有个绿色的“RUN”在滚动.应该怎么调呢
wobushisb 瑞萨电子MCU
基于CS结构的远程数字视频监控系统
一、前言  当前视频监控系统正逐步由模拟化走向数字化。随着视频压缩技术和网络技术的发展,开发新一代基于计算机网络和多媒体MPEG-4压缩算法的视频监控系统已成为整个行业技术发展的主要方向之一。本文提出并研究设计了一种分布式网络视频监控系统。该系统采用流行的分布式C/S架构对系统进行设计,并采用流媒体技术,通过IP多播技术、RTP/RTCP实时传送视频监控流。  该数字视频监控系统与传统的基于数字DVR、视频服务器的数字视频监控系统相比有以下优势:  1.性能稳定可靠。一般监控系统中的
xyh_521 安防电子
为什么写了一个简单的软件延时程序无法调试
我在书上抄的一段程序#include\"io430.h\"#includemsp430x44x.h#defineConst100vodiSoftDelay(intFactor){inti,j;for(i=0;iFactor;i++)for(j=0;jConst;j++);}voidmain(void){_NOP();SoftDelay(10);_NOP();}出现调试对话框的内容Buildingconfigurati
黛丝滢芸 微控制器 MCU
一款有异争议的50Hz开关电源方案
昨天,朋友发来一款开关电源方案(见图)他并说明了目的,要体积小,结构简,隔离,低频的容易通过EMC的控制电源,搞了如图一样的拓扑结果,要求输出DC5V/150mA(电容降压方案,IC降压方案都难过EMC 线性电还体积大;)如图的方案;  二种意见达不成共识,一种认为这种方案通不过,理由;采用50HZ频率,直驱三极管,方案不可取....!另一种意见是方案可行,虽然没有象专用电源IC变换,得到PWM脉冲,但通过如图拓扑,应能满足开关电源的基本条件....!    现将图贴出,请大家评头论足;说
czl618 电源技术
74系列芯片
不错的资料大家看看啊 74系列芯片有点大,上传都费劲啊你深情呼唤一下楼主,我好想没有给你加钱的权限啊回复11楼sdjnzpp的帖子 作为一名DIY电子爱好考者,好的书籍资料无疑是雪中送炭,谢谢。
zhangkai0215 电子竞赛
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved