STM32(一)STM32简介

发布者:CuriousObserver最新更新时间:2020-02-29 来源: eefocus关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

一、什么是STM32?

    意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国Thomson半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半导体有限公司,是世界最大的半导体公司之一。 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform)。

它具有以下三个特点:


 •新的基于ARM内核的32位MCU系列   


  –标准的ARM架构     –内核为ARM公司为要求高性能、低成本、低功耗的嵌入式应用专门设计的Cortex-M内核


 •超前的体系结构 


   –高性能     –低电压      –低功耗     –创新的内核以及外设


 •简单易用/自由/低风险


Cortex-M3系列属于ARMv7架构


ARMv7架构定义了三大分工明确的系列:


     “A”系列:面向尖端的基于虚拟内存的操作系统和用户应用

     “R”系列:针对实时系统;

     “M”系列:对微控制器

STM32F1属于Cortex-M系列中的Cortex-M3内核,采用ARMv7-M架构。STM32F4属于Cortex-M4系列采用ARMv7-ME架构。Cortex-A5/A8采用ARMv7-A架构。传统的ARM7系列采用的是ARMv4T架构。(想了解更多可参考韦东山老师的《Linux应用开发完全手册》第一章)

那么STM32与ARM有什么区别呢?

Cortex-M家族

STM32的命名规则

STM32的应用场景

STM32的应用场景还有很多,这里只是简单地列出一些。 

总的来说STM32具有如下优势:


 1)极高的性能:主流的Cortex内核。

 2)丰富合理的外设,合理的功耗,合理的价格。

 3)强大的软件支持:丰富的软件包。

 4)全面丰富的技术文档。

 5)芯片型号种类多,覆盖面广。

 6)强大的用户基础:最先成功试水CM3芯片的公司,积累了大批的用户群体,为其领先做铺垫。


二、按内核架构分为不同产品

    主流产品(STM32F0、STM32F1、STM32F3)

    超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)

    高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)

三、STM32F103板载资源(以正点原子MiniSTM32F103RCT6为例)

1.ALIENTEK MiniSTM32 V3.0开发板板载资源如下:

 ◆CPU:STM32F103RCT6,LQFP64,FLASH:256K,SRAM:48K;

 ◆1个标准的JTAG/SWD调试下载口

 ◆1个电源指示灯(蓝色)

 ◆2个状态指示灯(DS0:红色,DS1:绿色)

 ◆1个红外接收头,配备一款小巧的红外遥控器

 ◆1个IIC接口的EEPROM芯片,24C02,容量256字节

 ◆1个SPI FLASH芯片,W25Q64,容量为8M字节(即64M bit)

 ◆1个DS18B20/DS1820温度传感器预留接口

 ◆1个标准的2.4/2.8/3.5/4.3/7寸LCD接口,支持触摸屏

 ◆1个OLED模块接口(与LCD接口部分共用)

 ◆1个USB串口接口,可用于程序下载和代码调试

 ◆1个USB SLAVE接口,用于USB通信

 ◆1个SD卡接口

 ◆1个PS/2接口,可外接鼠标、键盘

 ◆1组5V电源供应/接入口

 ◆1组3.3V电源供应/接入口

 ◆1个启动模式选择配置接口

 ◆1个2.4G无线通信接口

 ◆1个RTC后备电池座,并带电池

 ◆1个复位按钮,可用于复位MCU和LCD

 ◆3个功能按钮,其中WK_UP兼具唤醒功能

 ◆1个电源开关,控制整个板的电源

 ◆3.3V与5V电源TVS保护,有效防止烧坏芯片。

 ◆独创的一键下载功能

 ◆除晶振占用的IO口外,其余所有IO口全部引出

2.芯片资源

芯片内部资源描述(STM32F103ZET6&STM32F103RCT6)

 内核:


  -32位 高性能ARMCortex-M3处理器 


  -时钟:高达72M,实际还可以超屏一点点 


  -单周期乘法和硬件除法


 IO口:


     -STM32F103ZET6:  144引脚  112个IO 


     -STM32F103RCT6: 64引脚  51个IO


     -大部分IO口都耐5V(模拟通道除外)          -支持调试:SWD和JTAG,SWD只要2根数据线


 存储器容量:


    -STM32F103ZET6:  512K  FLASH,64K  SRAM 


    -STM32F103RCT6: 256K  FLASH,48K  SRAM


 定时器:多达11个定时器


   -4个通用定时器    -2个基本定时器    -2个高级定时器 


   -1个系统定时器    -2个看门狗定时器


 通信接口:多达13个通信接口


    -2个I2C接口    -5个串口    -3个SPI接口    -1个CAN2.0    -1个USBFS    -1个SDIO


 时钟,复位和电源管理:


  ①2.0~3.6V电源和IO电压


  ②上电复位,掉电复位和可编程的电压监控


  ③强大的时钟系统


  -4~16M的外部高速晶振 -内部8MHz的高速RC振荡器 


  -内部40KHz低速RC振荡器,看门狗时钟


  -内部锁相环(PLL,倍频),一般系统时钟都是外部或者内部高速时钟经过PLL倍频后得到


  -外部低速32.768K的晶振,主要做RTC时钟源


3、STM32F103xC、STM32F103xD和STM32F103xE器件功能和配置

4.关于一些常见外设挂载在哪些总线之下?(APB1与APB2)

APB2下的外设:

APB1下的外设:

DCA

电源控制接口

后备寄存器

CAN

USB

这里大家只要记住TIM1 和 TIM8、GPIO、ADC、SPI等是高速外设,所以挂载在APB2总线之下(APB2、APB1,2>1,所以APB2为高速时钟总线),TIM2~TIM7 挂载在APB1总线之下,就够了。


其他常见的记不住的话,用到了去查《stm32中文参考手册》第28页29页就可以了。


四、STM32学习方法

 1、推荐学习网站:

 ①www.openedv.com 开源电子网,正点原子官方技术支持论坛。正点原子资料发布和售后官方平台。


 ②www.stmcu.org ST中国官方技术网站,ST官方文档发布网站。


 2、需要掌握哪些技能

C语言是嵌入式开发的基础中的基础。


关键字:STM32 引用地址:STM32(一)STM32简介

上一篇:STM32嵌入式入门必看之文章
下一篇:STM32之EXTI——外部中断

推荐阅读最新更新时间:2024-11-22 19:21

STM32失能时钟和复位外设的区别
在STM32参考手册中,都有Reset and Clock Control(RCC)复位和时钟控制的章节。 在这一章节就可以看到有两类寄存器: peripheral reset register(RSTR)外设复位寄存器。 peripheral clock enable register(ENR)外设时钟使能寄存器。 我们拿STM32F1参考手册为例,可以看到如下图寄存器: 一种是控制外设时钟的寄存器,一种是复位外设的寄存器。 外设时钟使能和失能 我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。 比如使能USART1时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
<font color='red'>STM32</font>失能时钟和复位外设的区别
FreeRTOS在STM32应用中的中断优先级设置问题
一、FreeRTOS中断设置介绍 FreeRTOSConfig.h中定义了两个宏,分别是: configKERNEL_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY configKERNEL_INTERRUPT_PRIORITY用来设置RTOS内核自己的中断优先级。因为RTOS内核中断不允许抢占用户使用的中断,因此这个宏一般定义为硬件最低优先级。configMAX_SYSCALL_INTERRUPT_PRIORITY用来设置可以在中断服务程序中安全调用FreeRTOS API函数的最高中断优先级。优先级小于等于这个宏所代表的优先级时,程序可以在中断服
[单片机]
FreeRTOS在<font color='red'>STM32</font>应用中的中断优先级设置问题
如何使用STM32单片机设置PWM输出
环境: 主机:XP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 使用内部8M晶振,倍频到64M供给TIM3定时器,PA6(通道1)上产生640K,50%方波 源代码: 初始化时钟: //初始化RCC时钟 voidinit_rcc(void) { //将外设RCC寄存器重设为缺省值 RCC_DeInit(); //内部晶振使能 RCC_HSICmd(ENABLE); //等待工作稳定 while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET); //LSI的启动,提供给看门狗时钟 RCC_LSICmd(ENABLE);//打开LSI while(RCC_GetF
[单片机]
如何使用<font color='red'>STM32</font>单片机设置PWM输出
基于STM32的CAN通信网-----一种ID配置方法
分布式CAN通信网ID分配方法 在介绍本方法前,先构建CAN通信网系统模型:只有一个管理中心节点,其他均为从节点。主节点可与所有从节点之间相互通信,从节点之间不相互通信。CAN通信网采用网桥扩展方式增大网络中的节点。 报文帧格式 帧信息 IDE=1 RTR=0 X X DLC 扩展帧 远程帧 保留位 帧数据部分长度(不大于8) 帧标 识符 ID28 ID27 ID26 ID25 ID24 ID24 ID22 ID21 DestMACID(目标节点编码) ID20 ID19 ID18 ID17 ID16 ID15 ID14 ID13 xxxxxxx
[单片机]
基于<font color='red'>STM32</font>的CAN通信网-----一种ID配置方法
stm32 FSMC-外扩SRAM IS62WV51216
引脚定义 FSMC配置步骤 1.使能对应引脚GPIO时钟 2.配置GPIO引脚模式 3.使能FSMC时钟 4.FSMC初始化 5.存储器块使能 举例 #define Bank1_SRAM3_ADDR ((u32)(0x68000000)) //首地址0x60000000,每块0x40000000 void SRAM_gpio_init() { GPIO_InitTypeDef gpiof = { GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPI
[单片机]
基于STM32单片机的四旋翼无人机飞控设计
四轴飞行器是一种利用四个旋翼作为飞行引擎来进行空中飞行的飞行器。进入20世纪以来,电子技术飞速发展四轴飞行器开始走向小型化,并融入了人工智能,使其发展趋于无人机,智能机器人。 四轴飞行器不但实现了直升机的垂直升降的飞行性能,同时也在一定程度上降低了飞行器机械结构的设计难度。 四轴飞行器的平衡控制系统由各类惯性传感器组成。在制作过程中,对整体机身的中心、对称性以及电机性能要求较低,这也正是制作四轴飞行器的优势所在,而且相较于固定翼飞机,四轴也有着可垂直起降,机动性好,易维护等优点。 一:方案& 电路 本设计采用STM32F1作为核心处理器,该处理器内核架构 ARM Cortex-M4,具有高性能、低成本、低功耗等特点。 主控
[单片机]
基于<font color='red'>STM32</font>单片机的四旋翼无人机飞控设计
STM32待机模式Standby Mode与ADC DMA模式测试备忘
1)STM32运行十秒后自动进入待机,使用WakeUp引脚唤醒CPU后,重复以上动作。 int main(void) { time_cnt = 0; HAL_Init(); SystemClock_Config(); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET); HAL_PWR_DisableWakeUpPin(PWR_CSR_EWUP); //禁止wakeup PA0引脚,可以用来做普通引脚功能 while (1) { HAL_Delay(1000); HAL_GPIO_TogglePin(GPIOG, GPIO_P
[单片机]
<font color='red'>STM32</font>待机模式Standby Mode与ADC DMA模式测试备忘
STM32库函数USART_SendData问题和解决方法
1. 问题及现象 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: 1 2 for(TxCounter = 0;TxCounter RxCounter; TxCounter++) USART_SendData(USART1, RxBuffer ); 2. 原因 此API函数不完善,函数体内部没有一个判断一个字符是否发送完毕的语句,而是把数据直接放入发送
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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