STM32课件
合集下载
《STM32单片机仿真开发实例》教学课件 1.3 STM32的内部构造
其中尤以前两种启动方式最为常见:①从主闪存启动即正常运行用户编写的程序, ②从系统存储器启动即进入ST公司预置的BootLoader(启动加载程序),一般用于从 串口1下载用户程序(具体将在1.4部分介绍)。
对于STM32F103R6而言,BOOT0引脚即60号引脚,BOOT1引脚即28号引脚 (PB2)。
Peripherals(片上外设映射地址)位于Block2中,起始地址0x4000 0000。
由于STM32使用C语言开发程序,因此程序与数据的存储地址完全由编译器自动分 配,无需人为干预。
定义变量,比如:
int a=12; 编译器为变量a自动分配一个4字节的SRAM空间并赋予初值12。 定义常量,比如:
const int b=23;
当变量b为常量时,编译器为变量b自动分配一个4字节的ROM空间并赋予初值23。
1.3.2 STM32的启动(BOOT)模式
STM32F103系列单片机具有三种启动方式,如下表所示,分别为从Main Flash memory(主闪存)启动、从System memory(系统存储器)启动和从Embedded SRAM(内置静态随机存储器)启动。
1.3.3 时钟树
STM32片内外设较多,为了实 现低功耗设计,允许用户对各种 外设的时钟信号进行配置,由此 构成了如右图所示的时钟树。
STM32内部采用了PLL( Phase-Locked Loop,锁相环)技 术,可以将总线频率最高倍频至 72MHz。
To be continued...
Flash ROM(用于存放程序)位于Block0中,地址范围0x0800 0000~0x0801 FFFF ,STM32F103R6地址范围0x0800 0000~0x0800 7FFF(共计32KB);
对于STM32F103R6而言,BOOT0引脚即60号引脚,BOOT1引脚即28号引脚 (PB2)。
Peripherals(片上外设映射地址)位于Block2中,起始地址0x4000 0000。
由于STM32使用C语言开发程序,因此程序与数据的存储地址完全由编译器自动分 配,无需人为干预。
定义变量,比如:
int a=12; 编译器为变量a自动分配一个4字节的SRAM空间并赋予初值12。 定义常量,比如:
const int b=23;
当变量b为常量时,编译器为变量b自动分配一个4字节的ROM空间并赋予初值23。
1.3.2 STM32的启动(BOOT)模式
STM32F103系列单片机具有三种启动方式,如下表所示,分别为从Main Flash memory(主闪存)启动、从System memory(系统存储器)启动和从Embedded SRAM(内置静态随机存储器)启动。
1.3.3 时钟树
STM32片内外设较多,为了实 现低功耗设计,允许用户对各种 外设的时钟信号进行配置,由此 构成了如右图所示的时钟树。
STM32内部采用了PLL( Phase-Locked Loop,锁相环)技 术,可以将总线频率最高倍频至 72MHz。
To be continued...
Flash ROM(用于存放程序)位于Block0中,地址范围0x0800 0000~0x0801 FFFF ,STM32F103R6地址范围0x0800 0000~0x0800 7FFF(共计32KB);
stm32自学笔记PPT课件
第三章 键盘
• 下面在分析一下中断子函数:
• void EXTI0_IRQHandler(void)
•{
•
delay_ms(10);//消抖
Hale Waihona Puke •if(KEY2==1)
//按键2
•
{
•
LED0=!LED0;
•
LED1=!LED1;
•
}
•
EXTI->PR=1<<0; //PR,清除LINE0上的中断标志位 ,终端挂起寄存器组。
•
GPIOA->CRH|=0X80800000;
•
GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉
•
GPIOA->ODR|=1<<15; //PA15上拉
•
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
•
Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发
• 3.建立.h文件,.h文件是用来保存一些宏定义和一些函 数声明的,这样能够使函数看起来更加清晰,所以在这 里一定要把各个.h函数的路径添加到工程里面。
第二章 跑马灯实验
• 主函数:
• int main(void)
•{
•
Stm32_Clock_Init(9); //系统时钟设置,把PLL设置为9,比如说当前的时钟为8Mhz,那
• JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD,在原理图上可以看 到PA13和PA15为键盘和JTAG与SWD所共用,而这两种方针接口,他们 和普通的IO口公用,当想使用普通IO口时,必须先把他们关闭。在这 个函数里面设置参数,如果为二进制数00,则代表全部使能,如果是 二进制数01,则是能SWD,如果是10,则表示全部关闭。JTAG是一种 国际标准测试协议,主要用于芯片内部的测试。
STM32ppt课件
12b ADC (1µs)
Temp sensor
* 只有在Flash大于256KB(包含)的芯片上才包括DAC, EMI (144 pins), I2S, SDIO
7
STM32F103 “增强型”系列
ARM Lite Hi-Speed Bus Matrix / Arbiter (max 72MHz)
Int. RC oscillators
32KHz + 8MHz
PLL
RTC / AWU
1x SDIO** 1x USB 2.0FS 1x bxCAN 2.0B
2x SPI/I2S**
1/2/4x USART/LIN Smartcard / IrDa Modem Control
1x SPI
1/2x I2C
ratio Up to 512KB
FLASH
“增强型”系列
Up to
2x12b ADC
72M Hz CPU
64KB SRA
M
EMI DAC **
(1µs)
Temp sensor
AC
USB CAN
I2S*
timer
SDI O*
“基本型”系列
36M Hz CPU
Up to 48KB SRA
M
EMI DAC **
6kB-64kB SRAM
20B Backup Regs
External Memory Interface**
Image Sensor**
Clock Control
Bridge
ARM Peripheral Bus Bridge
(max 36MHz)
2/3/5x 16-bit Timer
《STM32单片机仿真开发实例》教学课件 1.4 STM32的开发方式
硬件实物调试
软件仿真模拟
利用Flash Loader Demonstrator将程序下载
至单片机Flash ROM
利用Proteus仿真模拟
1.4.2 STM32CubeIDE简介
STM32CubeIDE是ST官方在2019年推出的STM32专用IDE。 STM32CubeIDE由原先两个工具软件整合而成:一个是ST公司在2016年推出的图 形化配置工具STM32CubeMX,;另一个是ST公司在2017年从Atollic收购的ARM编 程工具TrueSTUDIO,其主要功能是用于编写STM32程序代码。
1.4 STM32的程序开发方式
知识目标: 了解STM32的程序开发流程,了解与STM32程序开发相关的软件与硬件
知识。
1.4.1 STM32程序开发流程概述
利用STM32CubeIDE的图 形化配置工具生成工程目录
与初始化代码
利用STM32CubeIDE的代 码编辑工具编写程序并生成
HEX文件
STM32电路仿真软件采用了来自英国Labcenter公司出品的EDA工具Proteus,2016 年末Proteus 8.6中开始增加对STM32的支持,推荐使用Proteus 8.15及以上版本。
To be continued...
1.4.3 硬件实物调试简介
STM32可以通过ISP、ST-LINK、J-LINK三种途径下载程序,本课程主要介绍第一 种程序下载方式——ISP方式。该方式需要用到ST免费提供的Flash Loader
Demonstrator工具,并且需要在IDE中设定生成HEX文件(默认不生成HEX文件)。
1.4.4 软件仿真模拟简介
stm32PPt
ADC系统功能特性
– – – – – – – – – – – ADC开关控制 ADC时钟 ADC通道选择 ADC的转换模式 ADC的扫描模式 ADC的注入通道管理 间断模式 ADC的校准模式 可编程的通道采样时间 外部触发转换 DMA请求
中断
模拟看门狗
ADC的数据对齐
• ADC_CR2寄存器的ADC的数据对齐 ALIGN位选择转换后数据储存的对齐 方式。
• • •
//位复位寄存器 //锁定寄存器
通用I/O接口的编程方法
– 库函数:
• • • • • • • • • • • • • • • • • GPIO_DeInit函数 GPIO_AFIODeInit函数 GPIO_Init函数 GPIO_StructInit函数 GPIO_ReadInputDataBit函数 GPIO_ReadInputData函数 GPIO_ReadOutputDataBit函数 GPIO_ReadOutputData函数 GPIO_SetBits函数 GPIO_ResetBits函数 GPIO_WriteBit函数 GPIO_Write函数 GPIO_PinLockConfig函数 GPIO_EventOutputConfig函数 GPIO_EventOutputCmd函数 GPIO_PinRemapConfig函数 GPIO_EXTILineConfig函数
stm32嵌入式开发
第一讲:嵌入式系统开发概述
课程安排
– 何为嵌入式系统 – 嵌入式系统的特点及发展趋势 – 嵌入式系统的开发过程 – 如何成为嵌入式开发人员
何为嵌入式系统
– 嵌入式系统,英文全称为Embeded System。 – IEEE 的定义:嵌入式系统是“控制、监视或 者辅助装置、机器和设备运行的装置”。 – 业界普遍采用的定义:嵌入式系统是以应用 为中心、以计算机技术为基础、软件硬件可 裁剪、适应应用系统对功能、可靠性、成本、 体积、功耗等严格要求的专用计算机系统。
《嵌入式系统》课件_STM32
Copyright 2012 杨词慧. All rights reserved.
2 STM32F103的硬件结构
2) GPIO(续)
单独的位设置或位清除
在单次APB2写操作里,可以只更改 一个或多个位。 通过对GPIOx_BSRR、GPIOx_BRR 中想要更改的位写’1’来实现的。没
Copyright 2012 杨词慧. All rights reserved.
被选择的位将不被更改。
2 STM32F103的硬件结构
2) GPIO(续)
所有端口都有外部中断能力
如使用外部中断线,端口必须配置成
输入模式。
Copyright 2012 杨词慧. All rights reserved.
Copyright 2012 杨词慧. All rights reserved.
启动:用户Flash、系统存储器、SRAM
Copyright 2012 杨词慧. All rights reserved.
STM32F103xC, STM32F103xD and STM32F103xE >> Datasheet P12 performance line block diagram
2) GPIO(续)
外设的GPIO配置
Copyright 2012 杨词慧. All rights reserved.
>> Datasheet P110
2 STM32F103的硬件结构
2) GPIO(续)
GPIO寄存器
端口配置低寄存器(GPIOx_CRL) (x=A..E)
Copyright 2012 杨词慧. All rights reserved.
2 STM32F103的硬件结构
2) GPIO(续)
单独的位设置或位清除
在单次APB2写操作里,可以只更改 一个或多个位。 通过对GPIOx_BSRR、GPIOx_BRR 中想要更改的位写’1’来实现的。没
Copyright 2012 杨词慧. All rights reserved.
被选择的位将不被更改。
2 STM32F103的硬件结构
2) GPIO(续)
所有端口都有外部中断能力
如使用外部中断线,端口必须配置成
输入模式。
Copyright 2012 杨词慧. All rights reserved.
Copyright 2012 杨词慧. All rights reserved.
启动:用户Flash、系统存储器、SRAM
Copyright 2012 杨词慧. All rights reserved.
STM32F103xC, STM32F103xD and STM32F103xE >> Datasheet P12 performance line block diagram
2) GPIO(续)
外设的GPIO配置
Copyright 2012 杨词慧. All rights reserved.
>> Datasheet P110
2 STM32F103的硬件结构
2) GPIO(续)
GPIO寄存器
端口配置低寄存器(GPIOx_CRL) (x=A..E)
Copyright 2012 杨词慧. All rights reserved.
嵌入式系统设计(STM32)第2讲资料课件
9. 名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标 志位被设置与否,例如:I2C_GetFlagStatus.
10. 名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位, 例如:I2C_ClearFlag.
11. 名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的 中断发生与否,例如:I2C_GetITStatus.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE); n //RCC_APB2Periph_GPIOA GPIOA时钟 n //RCC_APB2Periph_GPIOB GPIOB时钟 n //RCC_APB2Periph_GPIOC GPIOC时钟 n //RCC_APB2Periph_GPIOD GPIOD时钟 n}
33
n /*设置低速AHB时钟(PCLK1)*/
n RCC_PCLK1Config(RCC_HCLK_Div2);
n
//RCC_HCLK_Div2——APB1时钟 = HCLK / 2
n
/*设置FLASH存储器延时时钟周期数*/
n FLASH_SetLatency(FLASH_Latency_2);
67
68
2.4 工程模板的建立
2.4.1 ARM Cortex-M3处理器编程环境 需要准备的资料: n 1. STM32F10x_StdPeriph_Lib_V3.5.0 (这是
n // PLL的输入时钟 = HSE时钟频率RCC_PLLMul_9,PLL输入时钟x9
n /*使能PLL */
10. 名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位, 例如:I2C_ClearFlag.
11. 名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的 中断发生与否,例如:I2C_GetITStatus.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE); n //RCC_APB2Periph_GPIOA GPIOA时钟 n //RCC_APB2Periph_GPIOB GPIOB时钟 n //RCC_APB2Periph_GPIOC GPIOC时钟 n //RCC_APB2Periph_GPIOD GPIOD时钟 n}
33
n /*设置低速AHB时钟(PCLK1)*/
n RCC_PCLK1Config(RCC_HCLK_Div2);
n
//RCC_HCLK_Div2——APB1时钟 = HCLK / 2
n
/*设置FLASH存储器延时时钟周期数*/
n FLASH_SetLatency(FLASH_Latency_2);
67
68
2.4 工程模板的建立
2.4.1 ARM Cortex-M3处理器编程环境 需要准备的资料: n 1. STM32F10x_StdPeriph_Lib_V3.5.0 (这是
n // PLL的输入时钟 = HSE时钟频率RCC_PLLMul_9,PLL输入时钟x9
n /*使能PLL */
STM32考试复习(完整版)ppt课件
18
STM32 串口例程讲解
/*******************************************************************************
* Name : UART1_Configuration
*******************************************************************************/
//设置为下降沿中断
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
//中断使能,即开中断
EXTI_Init(&EXTI_InitStructure);
//调用EXTI_Init固件库函数,将结构体写入EXTI相关寄存器中
}
13
STM32外部中断例程讲解
void EXTI0_IRQHandler(void) {
9
STM32外部中断例程讲解
void RCC_Configuration(void) {
SystemInit();
//系统时钟配置为72MHZ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,
ENABLE);
//打开AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
//配置输入脚PA0控制按键 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); }
STM32 串口例程讲解
/*******************************************************************************
* Name : UART1_Configuration
*******************************************************************************/
//设置为下降沿中断
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
//中断使能,即开中断
EXTI_Init(&EXTI_InitStructure);
//调用EXTI_Init固件库函数,将结构体写入EXTI相关寄存器中
}
13
STM32外部中断例程讲解
void EXTI0_IRQHandler(void) {
9
STM32外部中断例程讲解
void RCC_Configuration(void) {
SystemInit();
//系统时钟配置为72MHZ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,
ENABLE);
//打开AFIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
//配置输入脚PA0控制按键 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); }
STM32单片机原理及应用PPT幻灯片课件
10
设计模式
基础型:做好需要专业的软硬件知识 智能型:在搭建的程序框架下设计 高级型:在操作系统管理下,专注应用。 介绍特色、扩展内容,比较学习。需要大家
课下认真消化资料,掌握基础内容。 STM32F10x参考手册_cn.pdf
11
二、硬件—特色接口
I/O
低功耗模式、定时器/计数器、输入捕获
7
实际工程应用的一般步骤
了解--- 背景:工艺流程,技术发展情况论述. 掌握---原理论述、同类方案比较。 设计--- 方案:系统框图,功能描述. 实现---软件流程、功能实现。
8
实际工程应用的一般步骤
9
一、STM32微控制器系列_cn.pdf
STM32的主要优点 ■ 使用ARM最新的、先进架构的Cortex-M3内核 ■ 优异的实时性能 ■ 杰出的功耗控制 ■ 出众及创新的外设 ■ 最大程度的集成整合 ■ 易于开发,可使产品 ■ 快速进入市场
IMUST B&E LAB5 ©
第一部分
STM32单片机原理及应用
6
需要掌握
掌握单片机的一般设计方法。 目前典型接口电路原理及应用。 开发环境Keil 及编程工具的使用。 能够设计建立基于单片机的系统。 设计完成一个基于STM32单片机的应用系统。
完成:系统描述,软硬件设计,调试结果并写出 报告。
引导程序,自展程序 (=bootstrap))
12
13
14
15
通用输入输出(General
) Purpose Input/Output
16
17
通用同步异步收发机 (Universal Synchronous Asynchronous Receiver Transmitter)
设计模式
基础型:做好需要专业的软硬件知识 智能型:在搭建的程序框架下设计 高级型:在操作系统管理下,专注应用。 介绍特色、扩展内容,比较学习。需要大家
课下认真消化资料,掌握基础内容。 STM32F10x参考手册_cn.pdf
11
二、硬件—特色接口
I/O
低功耗模式、定时器/计数器、输入捕获
7
实际工程应用的一般步骤
了解--- 背景:工艺流程,技术发展情况论述. 掌握---原理论述、同类方案比较。 设计--- 方案:系统框图,功能描述. 实现---软件流程、功能实现。
8
实际工程应用的一般步骤
9
一、STM32微控制器系列_cn.pdf
STM32的主要优点 ■ 使用ARM最新的、先进架构的Cortex-M3内核 ■ 优异的实时性能 ■ 杰出的功耗控制 ■ 出众及创新的外设 ■ 最大程度的集成整合 ■ 易于开发,可使产品 ■ 快速进入市场
IMUST B&E LAB5 ©
第一部分
STM32单片机原理及应用
6
需要掌握
掌握单片机的一般设计方法。 目前典型接口电路原理及应用。 开发环境Keil 及编程工具的使用。 能够设计建立基于单片机的系统。 设计完成一个基于STM32单片机的应用系统。
完成:系统描述,软硬件设计,调试结果并写出 报告。
引导程序,自展程序 (=bootstrap))
12
13
14
15
通用输入输出(General
) Purpose Input/Output
16
17
通用同步异步收发机 (Universal Synchronous Asynchronous Receiver Transmitter)
《STM32单片机仿真开发实例》教学课件 4.2 LED单灯闪烁之定时器延时(阻塞方式)
TCNT
PSC 1 = 7999+1 =1000S
fCLK
8
1ms
定时器一次溢出时间:
TOUT TCNT ( ARR 1) 1000 (999 1) 106 s 1s
本次任务需要用到的新的API函数有: ① 定时器启动函数(不开中断) HAL_TIM_Base_Start
例程:
//运行定时器TIM3 if( HAL_TIM_Base_Start(&htim3) != HAL_OK ) { Error_Handler(); }
例程:
__HAL_TIM_SET_COUNTER(&htim3,0); //将定时器TIM3当前计数值设定为0
② 获取定时器当前计数值宏 __HAL_TIM_GET_COUNTER
例程:
//读取定时器TIM3当前计数值 uint16_t cnt = __HAL_TIM_GET_COUNTER(&htim3);
为TIM3的计数脉冲,预分频参数保存在一个16位的寄存器TIM3_PSC(后简称PSC,
PreScale)之中,此时TIM3的计数脉冲周期TCNT和APB1 Timer clocks频率fCLK之间的
关系是:
TCNT
PSC 1 fCLK
STM32所有的定时器都是16位定时器,即计数范围为0~65535,我们可以根据实际
STM32F103R6内部仅保留 TIM1、TIM2、TIM3三个定时 器。
(2)定时器基本定时功能 定时器最基本的功能就是定时 ,本质上就是对周期性脉冲信号 进行计数。由于STM32时钟树结 构的复杂性,因此不同的定时器 未必采用相同的时钟信号源,详 见右图。
STM32的定时器具有三种不同的计数模式: ◆向上计数模式:从默认初始值0开始做加法计数,加到预设值,产生一次溢出事 件,自动复位至初始值0开始新一轮的计数,这也是定时器最常用的计数模式。 ◆向下计数模式:从设定初始值开始做减法计数,减到0,产生一次溢出事件,自 动复位至初始值ARR开始新一轮的计数。 ◆中央对齐计数模式:在默认初始值0与预设值之间,先做向上(加法)计数,再 做向下(减法)计数,完成一个计数周期之后产生一次溢出事件,接着进行新一轮的 计数。 通常采用向上计数模式。
第5章stm32单片机外部中断ppt课件
5.2.3 中断控制器
ICER[2]:全称Interrupt Clear-Enable Registers,是 一个中断清除使能寄存器组。
该寄存器组与ISER寄存器功能相反,用来清除某个 中断的使能位。由于NVIC的这些寄存器都是写1有 效的,写0是无效的。设置一组ICER 寄存器来清除 相应中断使能位。
5.2.1 中断源
ARM Coetex-M3内核共支持256个中断,其中16 个内部中断,240个外部中断和可编程的256级中断优 先级的设置。STM32目前支持的中断共84个(16个内 部+68个外部),还有16级可编程的中断优先级的设 置,仅使用中断优先级设置8bit中的高4位。
5.2.2 中断向量:表5-1 给出STM32F103中断向量表
5.3.2 中断优先级控制
响应优先级可设置为0到15级。 判断两个中断的优先级时: (1)先看抢占优先级的高低; (2)再看响应优先级的高低; (3)看中断通道向量地址。 一个系统使用一个组别就完全可以满足需要,在使 用一个组别后不要在系统中再改动组别。
5.3.2 中断优先级控制
假定设置中断优先级为组2,然后设置: 中断3(RTC中断)的抢占优先级为2,响应优先级为1。 中断6(外部中断0)的抢占优先级为3,响应优先级为0。 中断7(外部中断1)的抢占优先级为2,响应优先级为0。 求这3个中断的优先级顺序? 上面例子中的中断3和中断7都可以打断中断6 的中断。而中 断7和中断3却不可以相互打断(这是因为他们的抢占优先级 是相同的)。
5.2.3 中断控制器
与NVIC相关的寄存器 在“stm32f10x_map.h” 文件中定义了一个结构 体,结构体的内容如下
STM32F103系列单片机 的中断系统在这些寄存 器的控制下有序执行。 了解这些中断寄存器的 含义,才能更好的理解 STM32单片机中断系统 的工作原理
第九章USART-STM32PPT课件
TX:发送数据输出引脚。 RX:接收数据输入引脚。 USART 数S据W寄_R存X器:(数US据A接RT收_引DR脚)只,有只低用于9 单位线有和效智;能卡模式,属于内部 USART_D引R脚包,含没了有已具发体送外的部数引据脚或。者接收到的数据。 USART_DnRRT实S际:是请包求含以了发两送个(R寄eq存u器es,t T一o个Se专n门d),用n于表发示送低的电可平有效。 写 TDR,n一C个TS专:门清用除于以接发收送的(C可le读arRTDoRS。end),n 表示低电平有效。 SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。
.
8
STM32 外设接口模块
串口设置一般可以总结为如下几个步骤: 1、串口时钟使能(USART 1用APB2时钟), GPIO 时钟使能 (APB2) 2、串口复位 USART_DeInit(USART1) 3、GPIO端口模式设置 (PA9、PA10) 4、串口参数初始化 (波特率、数据位、停止位、校验位等) 5、开启中断并且初始化 NVIC(如果需要开启中断才需要这个步 骤) 6、使能串口 USRRT_Cmd(USART1, ENABLE) 7、编写中断处理函数
通用同步异步收发器( USART)提供了一种灵活的方法来与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。 它支持同步一路通信和半双工的单线通信,LIN,智能卡协议,IrDA和调制解调 器操作( CTS/RTS);允许多处理器通信,可以进行高速的数据通信。
任何USART双向通信都至少需要两个引脚:接收数据输入( RX)和发送数据输 出( TX)。 RX:串行数据输入。 TX:发送数据输出。当发送器使能的时候并且没有数据要发送,TX引脚是高电 平。
第九章 STM32 外设接口模块
.
8
STM32 外设接口模块
串口设置一般可以总结为如下几个步骤: 1、串口时钟使能(USART 1用APB2时钟), GPIO 时钟使能 (APB2) 2、串口复位 USART_DeInit(USART1) 3、GPIO端口模式设置 (PA9、PA10) 4、串口参数初始化 (波特率、数据位、停止位、校验位等) 5、开启中断并且初始化 NVIC(如果需要开启中断才需要这个步 骤) 6、使能串口 USRRT_Cmd(USART1, ENABLE) 7、编写中断处理函数
通用同步异步收发器( USART)提供了一种灵活的方法来与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。 它支持同步一路通信和半双工的单线通信,LIN,智能卡协议,IrDA和调制解调 器操作( CTS/RTS);允许多处理器通信,可以进行高速的数据通信。
任何USART双向通信都至少需要两个引脚:接收数据输入( RX)和发送数据输 出( TX)。 RX:串行数据输入。 TX:发送数据输出。当发送器使能的时候并且没有数据要发送,TX引脚是高电 平。
第九章 STM32 外设接口模块
第2章STM32单片机IO端口编程PPT课件
第19页/共73页
2、枚举类型ErrorStatus 在文件“stm32f10x_type.h”中,包含 typedef enum {ERROR=0, SUCCESS=! ERROR} ErrorStatus;
该语句,定义了新枚举类型名ErrorStatus,代表左侧定义的 枚举类型。
第20页/共73页
3、RCC_Configuration(复位和时钟设置)函数:在“HelloRobot.h”
中 枚举类型
变量
ErrorStatus HSEStartUpStatus;
void RCC_Configuration(void)
{ /*将外设RCC寄存器组重新设置为默认值,即复位 。 RCC system reset*/ RCC_DeInit();
详见参考手册 V10_1 第P60
Backup domain control register (RCC_BDCR)
第17页/共73页
1、RCC复位和时钟配置寄存器组
编程时,时钟的具体配置是从RCC(Reset and Clock Configuration,复位和时钟配置)寄存器组开始。在固件库中,用结构体 RCC_TypeDef 定义 RCC寄存器组:
/* Enable peripheral clocks --------------------------------------------------*/ /* GPIOA, GPIOB and SPI1 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
RCC_PCLK2Config(RCC_HCLK_Div2);
第21页/共73页
stm32硬件平台展示PPT课件
第30页/共32页
致谢
• 感谢评委组老师的提问与评价。本课题的研究探讨以及论文撰写以及修改经过了数次的修改。一直都是在 余老师的细心指导下进行的。可以说其中的每个环节都倾注了老师的智慧和心血。尤其是老师在设计方向 上的把关以及全力支持表示真挚的感谢。
第31页/共32页
感谢您的观看!
第32页/共32页
STM32硬件平台基板的基本结构包括如下模块
• 数码管接口 • led灯接口 • 矩阵键盘接口 • SD 接口 • CAN总线接口 • MAX232 接UART接口 • USB接口 • 扬声器接口 • 电源供电模块 • 复位和滤波模块 • JATG调试接口
第13页/共32页
PCB的设计
• PCB的设计主要来源于对原理图的转换和生成。只要建立了正确的原理图,通过生成元器件就可以将原理 图上的元件都导入到PCB当中。然后就需要进行各个器件的排布和连线。通过对规则进行详细的设计后, 在进行布线,然后在检测其布线的合理性,并对其一一纠正。整体原理图和生成的PCB板图如下 :
Cortex-M3处理器使用了ARM v7-M体系结构,是一个可综合的、高度
可配置的处理器。它包含了一个高效的哈佛结构三级流水线,可提供
1.25DMIPS/MHz的性能。在一个具有32个物理中断的标准处理器实现
上(0.13um Metro @50MHz),达到了突出的0.06mW/MHz能效比。
为降低器件成本,Cortex-M3处理器采用了与系统部件紧耦合的实现方
•
1 功能强大,外设丰富,兼容性高
•
2 良好的功耗控制,优秀的电源管理能力
•
3 低廉的成本
• 随着国内近些年电子设计的高速发展,以及大众对高性能电子产品的需求增大,我们势 必要使用更多的更好的芯片进行设计和开发。现今最热门的电子应用包括了汽车电子、 工业控制、医疗机械等传统方向;同时也包含了智能手机,GPS导航,电子书以及MID 等一系列的新兴的消费产品。在市面上这些高端的应用几乎都被各大国外企业所垄断, 开发民族电子产品是发展中国电子的根本。所以选择一款好的芯片就能够使复杂的开发 流程简化,从而达到事半功倍的效果。
致谢
• 感谢评委组老师的提问与评价。本课题的研究探讨以及论文撰写以及修改经过了数次的修改。一直都是在 余老师的细心指导下进行的。可以说其中的每个环节都倾注了老师的智慧和心血。尤其是老师在设计方向 上的把关以及全力支持表示真挚的感谢。
第31页/共32页
感谢您的观看!
第32页/共32页
STM32硬件平台基板的基本结构包括如下模块
• 数码管接口 • led灯接口 • 矩阵键盘接口 • SD 接口 • CAN总线接口 • MAX232 接UART接口 • USB接口 • 扬声器接口 • 电源供电模块 • 复位和滤波模块 • JATG调试接口
第13页/共32页
PCB的设计
• PCB的设计主要来源于对原理图的转换和生成。只要建立了正确的原理图,通过生成元器件就可以将原理 图上的元件都导入到PCB当中。然后就需要进行各个器件的排布和连线。通过对规则进行详细的设计后, 在进行布线,然后在检测其布线的合理性,并对其一一纠正。整体原理图和生成的PCB板图如下 :
Cortex-M3处理器使用了ARM v7-M体系结构,是一个可综合的、高度
可配置的处理器。它包含了一个高效的哈佛结构三级流水线,可提供
1.25DMIPS/MHz的性能。在一个具有32个物理中断的标准处理器实现
上(0.13um Metro @50MHz),达到了突出的0.06mW/MHz能效比。
为降低器件成本,Cortex-M3处理器采用了与系统部件紧耦合的实现方
•
1 功能强大,外设丰富,兼容性高
•
2 良好的功耗控制,优秀的电源管理能力
•
3 低廉的成本
• 随着国内近些年电子设计的高速发展,以及大众对高性能电子产品的需求增大,我们势 必要使用更多的更好的芯片进行设计和开发。现今最热门的电子应用包括了汽车电子、 工业控制、医疗机械等传统方向;同时也包含了智能手机,GPS导航,电子书以及MID 等一系列的新兴的消费产品。在市面上这些高端的应用几乎都被各大国外企业所垄断, 开发民族电子产品是发展中国电子的根本。所以选择一款好的芯片就能够使复杂的开发 流程简化,从而达到事半功倍的效果。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Flash I/F
CORTEXM3 CPU
•2V-3.6V 供电电压 •5V I/Os 电压容限 •出色的时钟安全模式 •带有唤醒功能的低功 耗模式 •内部RC •嵌入的RESET
72 MHz
ARM Lite Hi-Speed Bus Hi Matrix / Arbiter (max 72MHz)
32kB-512kB Flash Memory
Samples Dec 07 Production Q2 08
STM32F103Rx 256 K 64 KB RAM
STM32F103Vx 64 KB RAM
STM32F103Rx 128 K 20 KB RAM STM32F103C x 20 KB RAM STM32F103Cx 32 K 10 KB RAM
12b ADC (1µs) Temp sensor
11+ DMA 80% GPIO ratio Up to 512KB FLASH
* 只有在 只有在Flash大于 大于256KB(包含)的芯片上才包括 大于 (包含)的芯片上才包括DAC, EMI (144 pins), I2S, SDIO
STM32F103 “增强型”系列 增强型” 增强型
STM32系列介绍 系列介绍
• 管脚,软件和外设全线兼容 • FLASH
– 32KB,64KB,128KB,256K,512K
• RAM
– 6KB,10KB,20KB,32KB,64KB
• 封装
– LQFP-48/LQFP-64/LQFP-100/BGA-100
• 电压范围2.0到3.6V • I/O电压容限为5V
• 在LQFP100封装芯片的基础系统上只需要7个外
部无源器件
先进的外设
STM32采用双APB(先进外 设总线)结构,每条总线都 是高速APB总线(最高可到 CPU的频率)。 外设通过连接到这种总线结 构提高了外设的速度。
项目 USB USART SPI I2C GPIO PWM timer
速率 12Mbit/s Up to 4.5Mbit/s 18MHz(主和从) 400kHz 18MHz 72MHz时钟输入
(max 36MHz)
JTAG/SW Debug Nested vect IT Ctrl 1x Systic Timer DMA
3 to 11* Channels
Int. RC oscillators
32KHz + 8MHz
PLL
RTC / AWU 1x SDIO** 1x USB 2.0FS 1x bxCAN 2.0B 2x SPI/I2S**
12 Cycles (6 when Tail Chaining) Architecture Defined xPSR. 2 modes. Stacked regs (1 bank) Three
Undefined PSR. 6 modes. 20 Banked regs No
Cortex-M3 附加的特性
1/2/4x USART/LIN
ARM Peripheral Bus
•-40/+85°C(工业级 ° )
Bridge 6x 16-bit PWM 16Synchronized AC Timer
2/3/5x 16-bit Timer
(max 72MHz)
Up to 16 Ext. ITs 32/49/80* I/Os 1x SPI 1x USART/LIN
Smartcard/IrDa Modem-Ctrl
2x Watchdog
(independent & window)
2x DAC** 2x 12-bit ADC
16 channels / 1Msps
Smartcard / IrDa Modem Control
0/1x SPI 1/2x I2C
*仅限144脚的封装
优点
• 可升级的体系结构 • 适用你所有的应用 • 给用户相同的“外观和感受” • 统一的软件和开发投入
Cortex-M3 处理器
集成了内核和高级系统外设的分级处理器 • Cortex-M3 内核 – 哈佛体系结构 – 拥有分支预测功能的三级流水线 – Thumb®-2 指令集和传统的 Thumb 指令集 – 带有 硬件除法和 单信号周期乘法的 ALU • Cortex-M3 处理器 – Cortex-M3 内核 – 可配置的中断控制器 – 总线矩阵 – 先进的调试组件 – 可选择的 MPU & ETM
32b 32b 32b 64b
1 1 1 3-7*
硬件除法
– UDIV&SDIV – 指令执行需要2到12周期,取决与被除数与除数 – 两者越相近指令完成越快 – 指令可以被中断(丢弃/重启)
Cortex-M3 VS ARM7: 主要参数比较
ARM7TDMI-S 体系结构 指令集 DMIPS/MHz 流水线 中断 中断响应时间 存储器印射 系统状态 睡眠模式 v4T ARM (32-bit) & Thumb (16-bit) 0.74 Thumb / 0.93 ARM 3-Stage FIQ / IRQ
–简化了跟踪调试接口的管脚 ,从9脚减少到 2 或 3脚 –硬件中断处理不需要汇编代码 –综合的原子位操作改进了数据存储 –扩展的数据观测点 & Flash 保护技术 –嵌入式的睡眠控制和掉电模式 –可选择的小型的存储器保护单元 (MPU) 和 嵌入式跟踪宏单元 (ETM)
高集成度
• 内置式的管理单元减少了对外部器件的需求:
24-42 Cycles (Depending on LSM)
Cortex-M3 v7M Thumb-2 (Merged 32/16-bit) 1.25 Thumb-2 3-Stage + Branch Speculation
NMI, SysTick and up to 240 interrupts. Integrated NVIC Interrupt Controller up to 1-255 Priorities
• 上电复位,低电压检测,掉电检测,带有独立时钟的看门狗计时
器
• 一个主晶振驱动整个系统
• 廉价的4-6MHz晶振驱动CPU,
USB和所有外设 • 嵌入式PLL生成各种频率 • 可选择的为RTC提供的32KHz晶振
• 嵌入式的8MHz RC可以被用作主时钟
• 8MHz, 1%精度的内部振荡器 • 40KHz的内部实时时钟
2xUSART 2x16-bit timer 1xSPI, 1xI2C USB, CAN, PWM 2xADC
STM32 通用平台
STM32 概念 标准的 ARMTM Cortex-M3 内核 高性能外设 提供两个完整的产品系列 开发工具以及软件支持
各系列产品 全面兼容
Tools Family Periphs Core
•相比于ARM7TDMI,Cortex-M3内核要快35%且减少了45%的代码
Cortex-M3 处理器概述
Cortex-M3 处理器概述
三级流水线
– 取指,解码和执行
单信号周期乘法
Source Destination Cycles
16b x 16b 32b x 16b 32b x 32b 32b x 32b
POR/PDR/ PVD brown out
“增强型”系列
Up to 72M 64KB EMI DAC Hz SRA * * CPU M
2x12b ADC (1µs) Temp sensor
USB CAN
AC timer
I2S*
SDI O*
“基本型”系列
Up to 36M 48KB EMI DAC Hz SRA * * CPU M
广泛的工具和固件库支持
最大减少设计时间
标准的 ARMTM 体系结构
– 成熟的体系,便于开发
世界范围内有广泛的第三方支持
– 大量的开发工具以供选择( Keil, IAR, Raisonance,
Hitex )
使用从ST获得的免费的固件库 使用从ST获得的免费的固件库 ST
Cortex-M3 处理器概述
•哈佛结构
•指令总线和数据总线分离,允许并行地取指和数据存储
•指令密度达到1.25DMIPS/MHz ,0.19mW/MHz •Thumb-2指令集拥有32位的性能和16位的代码密度 •单周期乘法和硬件除法 •Cortex-M3核内部集成了嵌入式高速中断控制器:
•低中断响应时间,最低可达6个CPU周期(内部中断) •从低功耗模式被唤醒也只需6个CPU 周期
STM32F103Rx 10 KB RAM
6 KB RAM*
0K 48 pins LQFP
6 KB RAM*
64 pins LQFP 100 pins LQFP/BGA
STM32R103Zx 64 KB RAM 144 pins LQFP/BGA
* 32kB devices exist w/o the CAN and USB, with 6kB of RAM
Power Supply
Reg 1.8V
POR/PDR/PVD XTAL oscillators
32KHz + 4~16MHz
6kB-64kB SRAM 20B Backup Regs External Memory Interface** Image Sensor** Clock Control Bridge ARM Peripheral Bus
72 MHz CORTEX- M3 CPU Wide offer • 32KB-512KB Flash • 6Kb-64KB RAMLQFP (77)(20x20)/BGA
STM32F10x的两条产品线 的两条产品线
CORTEXM3 CPU
•2V-3.6V 供电电压 •5V I/Os 电压容限 •出色的时钟安全模式 •带有唤醒功能的低功 耗模式 •内部RC •嵌入的RESET
72 MHz
ARM Lite Hi-Speed Bus Hi Matrix / Arbiter (max 72MHz)
32kB-512kB Flash Memory
Samples Dec 07 Production Q2 08
STM32F103Rx 256 K 64 KB RAM
STM32F103Vx 64 KB RAM
STM32F103Rx 128 K 20 KB RAM STM32F103C x 20 KB RAM STM32F103Cx 32 K 10 KB RAM
12b ADC (1µs) Temp sensor
11+ DMA 80% GPIO ratio Up to 512KB FLASH
* 只有在 只有在Flash大于 大于256KB(包含)的芯片上才包括 大于 (包含)的芯片上才包括DAC, EMI (144 pins), I2S, SDIO
STM32F103 “增强型”系列 增强型” 增强型
STM32系列介绍 系列介绍
• 管脚,软件和外设全线兼容 • FLASH
– 32KB,64KB,128KB,256K,512K
• RAM
– 6KB,10KB,20KB,32KB,64KB
• 封装
– LQFP-48/LQFP-64/LQFP-100/BGA-100
• 电压范围2.0到3.6V • I/O电压容限为5V
• 在LQFP100封装芯片的基础系统上只需要7个外
部无源器件
先进的外设
STM32采用双APB(先进外 设总线)结构,每条总线都 是高速APB总线(最高可到 CPU的频率)。 外设通过连接到这种总线结 构提高了外设的速度。
项目 USB USART SPI I2C GPIO PWM timer
速率 12Mbit/s Up to 4.5Mbit/s 18MHz(主和从) 400kHz 18MHz 72MHz时钟输入
(max 36MHz)
JTAG/SW Debug Nested vect IT Ctrl 1x Systic Timer DMA
3 to 11* Channels
Int. RC oscillators
32KHz + 8MHz
PLL
RTC / AWU 1x SDIO** 1x USB 2.0FS 1x bxCAN 2.0B 2x SPI/I2S**
12 Cycles (6 when Tail Chaining) Architecture Defined xPSR. 2 modes. Stacked regs (1 bank) Three
Undefined PSR. 6 modes. 20 Banked regs No
Cortex-M3 附加的特性
1/2/4x USART/LIN
ARM Peripheral Bus
•-40/+85°C(工业级 ° )
Bridge 6x 16-bit PWM 16Synchronized AC Timer
2/3/5x 16-bit Timer
(max 72MHz)
Up to 16 Ext. ITs 32/49/80* I/Os 1x SPI 1x USART/LIN
Smartcard/IrDa Modem-Ctrl
2x Watchdog
(independent & window)
2x DAC** 2x 12-bit ADC
16 channels / 1Msps
Smartcard / IrDa Modem Control
0/1x SPI 1/2x I2C
*仅限144脚的封装
优点
• 可升级的体系结构 • 适用你所有的应用 • 给用户相同的“外观和感受” • 统一的软件和开发投入
Cortex-M3 处理器
集成了内核和高级系统外设的分级处理器 • Cortex-M3 内核 – 哈佛体系结构 – 拥有分支预测功能的三级流水线 – Thumb®-2 指令集和传统的 Thumb 指令集 – 带有 硬件除法和 单信号周期乘法的 ALU • Cortex-M3 处理器 – Cortex-M3 内核 – 可配置的中断控制器 – 总线矩阵 – 先进的调试组件 – 可选择的 MPU & ETM
32b 32b 32b 64b
1 1 1 3-7*
硬件除法
– UDIV&SDIV – 指令执行需要2到12周期,取决与被除数与除数 – 两者越相近指令完成越快 – 指令可以被中断(丢弃/重启)
Cortex-M3 VS ARM7: 主要参数比较
ARM7TDMI-S 体系结构 指令集 DMIPS/MHz 流水线 中断 中断响应时间 存储器印射 系统状态 睡眠模式 v4T ARM (32-bit) & Thumb (16-bit) 0.74 Thumb / 0.93 ARM 3-Stage FIQ / IRQ
–简化了跟踪调试接口的管脚 ,从9脚减少到 2 或 3脚 –硬件中断处理不需要汇编代码 –综合的原子位操作改进了数据存储 –扩展的数据观测点 & Flash 保护技术 –嵌入式的睡眠控制和掉电模式 –可选择的小型的存储器保护单元 (MPU) 和 嵌入式跟踪宏单元 (ETM)
高集成度
• 内置式的管理单元减少了对外部器件的需求:
24-42 Cycles (Depending on LSM)
Cortex-M3 v7M Thumb-2 (Merged 32/16-bit) 1.25 Thumb-2 3-Stage + Branch Speculation
NMI, SysTick and up to 240 interrupts. Integrated NVIC Interrupt Controller up to 1-255 Priorities
• 上电复位,低电压检测,掉电检测,带有独立时钟的看门狗计时
器
• 一个主晶振驱动整个系统
• 廉价的4-6MHz晶振驱动CPU,
USB和所有外设 • 嵌入式PLL生成各种频率 • 可选择的为RTC提供的32KHz晶振
• 嵌入式的8MHz RC可以被用作主时钟
• 8MHz, 1%精度的内部振荡器 • 40KHz的内部实时时钟
2xUSART 2x16-bit timer 1xSPI, 1xI2C USB, CAN, PWM 2xADC
STM32 通用平台
STM32 概念 标准的 ARMTM Cortex-M3 内核 高性能外设 提供两个完整的产品系列 开发工具以及软件支持
各系列产品 全面兼容
Tools Family Periphs Core
•相比于ARM7TDMI,Cortex-M3内核要快35%且减少了45%的代码
Cortex-M3 处理器概述
Cortex-M3 处理器概述
三级流水线
– 取指,解码和执行
单信号周期乘法
Source Destination Cycles
16b x 16b 32b x 16b 32b x 32b 32b x 32b
POR/PDR/ PVD brown out
“增强型”系列
Up to 72M 64KB EMI DAC Hz SRA * * CPU M
2x12b ADC (1µs) Temp sensor
USB CAN
AC timer
I2S*
SDI O*
“基本型”系列
Up to 36M 48KB EMI DAC Hz SRA * * CPU M
广泛的工具和固件库支持
最大减少设计时间
标准的 ARMTM 体系结构
– 成熟的体系,便于开发
世界范围内有广泛的第三方支持
– 大量的开发工具以供选择( Keil, IAR, Raisonance,
Hitex )
使用从ST获得的免费的固件库 使用从ST获得的免费的固件库 ST
Cortex-M3 处理器概述
•哈佛结构
•指令总线和数据总线分离,允许并行地取指和数据存储
•指令密度达到1.25DMIPS/MHz ,0.19mW/MHz •Thumb-2指令集拥有32位的性能和16位的代码密度 •单周期乘法和硬件除法 •Cortex-M3核内部集成了嵌入式高速中断控制器:
•低中断响应时间,最低可达6个CPU周期(内部中断) •从低功耗模式被唤醒也只需6个CPU 周期
STM32F103Rx 10 KB RAM
6 KB RAM*
0K 48 pins LQFP
6 KB RAM*
64 pins LQFP 100 pins LQFP/BGA
STM32R103Zx 64 KB RAM 144 pins LQFP/BGA
* 32kB devices exist w/o the CAN and USB, with 6kB of RAM
Power Supply
Reg 1.8V
POR/PDR/PVD XTAL oscillators
32KHz + 4~16MHz
6kB-64kB SRAM 20B Backup Regs External Memory Interface** Image Sensor** Clock Control Bridge ARM Peripheral Bus
72 MHz CORTEX- M3 CPU Wide offer • 32KB-512KB Flash • 6Kb-64KB RAMLQFP (77)(20x20)/BGA
STM32F10x的两条产品线 的两条产品线