stm32知识点最终版!
第4章STM32开发基础知识总结
第4章STM32开发基础知识总结STM32是一款由STMicroelectronics开发的基于ARM Cortex-M内核的32位单片机系列。
它具有丰富的外设和强大的性能,被广泛应用于嵌入式系统开发领域。
本章主要介绍了STM32开发的基础知识,包括STM32的主要特点、STM32的系统结构、STM32的寄存器、中断和时钟系统等。
在这些内容中,我们可以看到STM32的强大功能和灵活调整的性能。
首先,STM32的主要特点是高性能、低功耗和易于扩展。
它具有高速的CPU、丰富的外设、多种存储器、多种通信接口等特点,可以满足不同嵌入式系统的需求。
此外,STM32采用高级微控制器接口规则(Advanced Microcontroller Bus Architecture, AMBA),使得不同外设可以方便地进行通信和控制,提高了系统的整体性能和可靠性。
另外,STM32还具有低功耗和易于扩展的特点,并且支持多种不同的睡眠模式,可以根据实际需求来管理能量消耗和系统功能。
其次,STM32的系统结构主要由核心和外设组成。
核心是STM32的处理器单元,基于ARM的Cortex-M内核,包括处理器、存储器和调试接口等。
外设是与核心进行通信和控制的设备,包括GPIO、串口、I2C、SPI 等。
在STM32中,外设被映射到特定的地址空间,可以通过读写这些地址来进行控制和数据传输。
此外,STM32还支持内存映射和外设映射,可以方便地访问外部存储器和外设。
第三,STM32的寄存器用于配置和控制外设的功能。
每个外设都有一组寄存器,用于存储和读取外设的状态和配置信息。
在STM32中,寄存器可以通过寄存器地址进行直接访问,也可以通过寄存器定义和结构体来进行访问。
通过配置寄存器,可以设置外设的工作模式、时钟频率、中断使能等。
通过读取寄存器,可以获取外设的状态、数据和中断信息。
寄存器操作是STM32开发中的重要部分,需要熟练掌握和灵活运用。
stm32知识点最终版!
stm32知识点最终版!STM32是由意法半导体(STMicroelectronics)公司推出的一系列32位ARM基于Cortex-M内核的微控制器,广泛应用于各种电子设备中。
它具有高性能、低功耗、丰富的外设资源以及丰富的开发工具和生态系统,被广泛应用于嵌入式系统设计中。
1.STM32系列STM32系列包括多个不同型号的微控制器,每个型号都有其特定的功能和特点。
主要的系列包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7等。
2. ARM Cortex-M内核STM32采用了ARM Cortex-M内核,这是一款低功耗、高性能的32位微处理器内核。
Cortex-M内核具有良好的实时性、低功耗特性以及简洁的指令集,特别适用于嵌入式系统开发。
3.外设资源STM32具有丰富的外设资源,包括通用输入输出口(GPIO)、通用串行总线(UART、SPI、I2C)、模拟-数字转换器(ADC)、定时器(Timer)、中断控制器(NVIC)等。
这些外设资源可以灵活地满足各种应用需求。
4.开发工具和生态系统5.开发流程6.应用领域STM32被广泛应用于各种嵌入式系统设计中。
它可以用于工业控制、智能家居、电动车控制、消费电子产品等领域。
其灵活性和可扩展性使得它成为嵌入式开发人员的首选。
7.嵌入式系统设计嵌入式系统设计是指将STM32微控制器与其他硬件组件(如传感器、执行器等)结合起来,构建出具有特定功能的系统。
开发者需要熟悉硬件电路设计、嵌入式编程、通信协议等知识,以完成系统的设计和开发。
8.低功耗优化STM32具有低功耗特性,能够在运行时最大程度地减少能耗。
开发者可以通过优化代码、合理配置外设资源、使用低功耗模式等方法,进一步降低系统的功耗,延长设备的使用时间。
9.实时性要求STM32的Cortex-M内核具有良好的实时性,可以满足实时控制和处理要求。
开发者可以使用定时器、中断和DMA等机制,保证系统对实时事件的快速响应和处理。
STM32单片机的知识点总结
STM32单片机的知识点总结STM32 单片机是意法半导体公司(STMicroelectronics)推出的一款基于 ARM Cortex-M 内核的 32 位微控制器。
它集成了高性能的处理器、丰富的外设和丰富的通信接口,具有低功耗、高性能和可扩展性等特点。
在学习 STM32 单片机的过程中,有以下一些关键的知识点需要掌握。
1. ARM Cortex-MSTM32 单片机采用 ARM Cortex-M 内核,包括 Cortex-M0、Cortex-M3、Cortex-M4 和 Cortex-M7 四个系列。
不同系列的 Cortex-M 内核具有不同的性能和特性,需要根据应用的需求选择适合的型号。
2.STM32单片机硬件架构3. STM32 CubeMX4.STM32外设STM32单片机具有丰富的外设,包括GPIO、定时器、UART、SPI、I2C、ADC、DAC、PWM等。
了解这些外设的特性和使用方法,可以实现各种不同类型的应用,如数字输入输出、定时控制、串行通信、模拟信号采集等。
5.STM32中断6.STM32时钟7.STM32低功耗模式8.STM32中文手册9.STM32HAL库STM32 提供了一套硬件抽象层(Hardware Abstraction Layer,HAL)库,用于快速开发和移植应用程序。
了解 STM32 HAL 库的使用方法,可以快速搭建 STM32 系统,并简化底层驱动编程。
10.STM32串口调试和编程以上是关于STM32单片机的一些关键知识点的总结,希望能对您的学习与应用有所帮助。
当然,除了这些知识点之外,还有很多其他的内容需要深入学习和探索,如实时操作系统(RTOS)、外设驱动、外部存储器接口等。
不断学习和实践将帮助您更好地掌握和应用STM32单片机。
STM32相关知识点总结讲解
STM32相关知识点总结讲解STM32是意法半导体公司(STMicroelectronics)推出的32位ARM Cortex-M处理器系列的微控制器。
它们具有较高的性能、较低的功耗以及丰富的外设和功能,适用于各种应用领域,例如工业自动化、嵌入式系统、通信设备等。
下面将对STM32相关的知识点进行总结讲解。
1.STM32系列的分类:STM32系列微控制器分为多个系列,主要有STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32L0、STM32L1、STM32L4等。
不同系列的微控制器具有不同的特点和应用领域,可以根据实际需求选择适合的系列。
2. Cortex-M处理器:STM32微控制器采用了ARM Cortex-M处理器架构,主要有Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4和Cortex-M7等几个版本。
这些处理器具有较高的性能和较低的功耗,适合于嵌入式系统开发。
3. 开发工具:STM32微控制器可以使用ST官方提供的开发工具进行开发,主要有STM32CubeMX、IDE工具(如STM32CubeIDE、Keil MDK等)以及调试工具(如ST-Link、J-Link等)。
使用这些工具可以进行代码生成、开发环境配置、调试等操作。
4.外设:STM32微控制器内置了多种外设,如通用串行总线(USART、SPI、I2C等)、通用定时器(TIM)、模数转换器(ADC)、通用输入输出端口(GPIO)等。
这些外设可以进行数据通信、定时器计数、模数转换等操作,方便开发各种应用。
5. STM32Cube库:ST官方提供了STM32Cube库,其中包括了针对不同系列的微控制器的驱动程序、例程和中间件支持。
开发者可以使用这些库函数进行硬件驱动和功能开发,简化了开发过程。
6. 库函数:使用STM32Cube库函数可以方便地配置和操作STM32微控制器的各种功能,例如配置外设的参数、控制时钟、中断配置等。
stm32大类知识点
stm32大类知识点STM32是一款由STMicroelectronics公司推出的32位单片机系列产品。
该系列产品具有强大的性能和丰富的外设,被广泛应用于嵌入式系统开发。
下面将介绍STM32大类知识点。
1. 架构:STM32系列产品基于ARM Cortex-M内核,分为多个系列,包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32H7等。
每个系列都有不同的性能和外设集。
2. GPIO:通用输入输出端口(GPIO)是STM32微控制器的基本外设之一。
它可以作为输入或输出,用于连接外部设备或传感器,实现与外界的数据交互。
3. 定时器:STM32系列微控制器配备了多个定时器模块,用于产生定时和计数操作。
定时器可以用于延时、脉冲宽度调制(PWM)、捕获输入等应用。
4. 中断:STM32支持多种中断类型,包括外部中断、定时器中断、串口中断等。
中断用于实现多任务处理,提高系统的响应速度和实时性。
5. 串口通信:STM32支持多种串口通信接口,如UART、USART和SPI等。
这些接口可以用于与其他设备进行数据交换,如PC、传感器、外部存储器等。
6. ADC和DAC:模数转换器(ADC)和数字模拟转换器(DAC)是STM32重要的模拟外设。
ADC用于将模拟信号转换为数字信号,DAC则将数字信号转换为模拟信号。
7. 外部存储器接口:STM32可以与外部存储器(如闪存、SD卡等)进行通信,实现数据的读写和存储。
8. 嵌入式操作系统支持:STM32支持多种嵌入式操作系统,如FreeRTOS、uC/OS和Zephyr等,用于实现复杂的任务调度和多线程处理。
9. 低功耗模式:STM32具有多种低功耗模式,如睡眠模式和待机模式,可用于延长电池寿命和降低系统功耗。
10. 开发工具和环境:针对STM32的开发可以使用ST公司提供的STM32Cube 开发平台,其中包括STM32CubeMX配置工具、STM32Cube HAL库和STM32Cube IDE集成开发环境等。
关于stm32的知识总结
关于stm32的知识总结关于STM32的知识总结STM32是一款由STMicroelectronics公司推出的32位单片机系列产品,广泛应用于各种嵌入式系统中。
它具有高性能、低功耗、丰富的外设资源和灵活的开发环境等特点,使其成为了嵌入式系统设计的首选。
一、STM32的特点1. 高性能:STM32系列搭载了Cortex-M系列的处理器核心,具有较高的运算能力和响应速度。
同时,它还集成了多个硬件加速器,如DMA(直接存储器访问)控制器和浮点运算单元,可以有效提升系统性能。
2. 低功耗:STM32采用了先进的低功耗技术,包括多级睡眠模式、功耗调节功能和时钟管理等,以降低功耗并延长电池寿命。
此外,它还支持动态电压调节(DVC)和功耗域(PD)控制,以根据实际需求灵活管理功耗。
3. 丰富的外设资源:STM32系列提供了丰富的外设资源,包括通用输入输出(GPIO)、定时器、串行通信接口(UART、SPI、I2C)、模数转换器(ADC)、模拟比较器、PWM输出等。
这些外设的存在,极大地简化了系统设计,并且可以满足各种不同应用的需求。
4. 灵活的开发环境:STM32系列支持多种开发环境,如Keil、IAR 等,同时还提供了丰富的软件库和示例代码,以便开发人员快速上手。
此外,ST公司还提供了一套完整的开发工具链,包括编译器、调试器和仿真器等,方便用户进行开发、调试和测试。
二、STM32的应用领域1. 工业自动化:STM32具有良好的实时性和可靠性,可以广泛应用于工业自动化领域,如PLC(可编程逻辑控制器)、DCS(分布式控制系统)和工业机器人等。
2. 智能家居:STM32的低功耗特性使其非常适合用于智能家居领域,如智能插座、智能灯光控制和智能门锁等。
同时,其丰富的外设资源也可以实现与各种传感器和执行器的连接。
3. 汽车电子:STM32具有较高的抗干扰能力和稳定性,可以在汽车电子系统中发挥重要作用。
它可以用于车身电子、发动机控制、车载娱乐系统等。
STM32常见知识点
STM32常见知识点1.STM32系列:STM32单片机有多个系列,如STM32F0、STM32F1、STM32F4等。
每个系列有不同的特性和性能,开发者可以根据需求选择最合适的系列。
2. Cortex-M内核:STM32使用ARM Cortex-M系列内核,这是一种简化的、高效的内核,适用于嵌入式系统开发。
Cortex-M内核有不同的版本,如Cortex-M0、Cortex-M3、Cortex-M4等,具有不同的特性和性能。
4.引脚:每个STM32芯片都有一定数量的GPIO引脚,可以用于输入输出。
引脚的数量和功能因芯片而异,要根据需要选择合适的芯片。
开发者可以通过配置寄存器将引脚设置为输入或输出,并通过读写寄存器来读取或改变引脚状态。
6.中断:STM32具有中断控制器,可以支持多种中断源,如外部引脚中断、定时器中断等。
开发者可以通过配置中断控制器和外设来实现中断处理程序,提高系统的实时性和响应能力。
7.定时器:STM32具有多个定时器模块,可以用于生成定时延迟、PWM输出、计时等功能。
开发者可以通过配置定时器的预分频、自动重载值和工作模式来实现不同的定时任务。
8.串口:STM32具有多个串口模块,可以用于与其他设备进行通信,如PC、传感器、无线模块等。
开发者可以通过配置串口的波特率、数据位数、停止位数和校验位等参数来实现不同的串口通信需求。
9.ADC:STM32具有多个ADC模块,可以用于模拟信号的采集。
开发者可以通过配置ADC的分辨率、采样速率和引脚选择等参数来实现模拟信号的采集。
10.外设:除了上述常见的模块外,STM32还具有其他丰富的外设模块,如CAN总线、SPI、I2C等。
开发者可以根据具体需求选择合适的外设模块,以实现更多功能。
11.FLASH和RAM:STM32芯片内置一定容量的FLASH和RAM,用于存储程序代码和数据。
开发者可以通过编译器和链接器将程序代码和数据加载到芯片的FLASH和RAM中,并进行读写操作。
STM32超强笔记
STM32学习笔记1、 AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备2、相当于(里面有基本的位操作定义),另一个为专门控制外围器件的配置,也就是开关头文件的作用3、 HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8MHz,HSI RC(High Speed InternalRC)高速内部RC,8MHz4、 LSE Osc(Low Speed External Oscillator)低速外部晶振,一般为,LSI RC(Low Speed InternalRC)低速内部晶振,大概为40KHz左右,提供看门狗时钟和自动唤醒单元时钟源5、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL6、 MCO[2:0]可以提供4源不同的时钟同步信号,PA87、 GPIO口貌似有两个反向串联的二极管用作钳位二极管。
8、总线矩阵采用轮换算法对系统总线和DMA进行仲裁9、 ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥10、在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟11、数据字节以小端存储形式保存在存储器中12、内存映射区分为8个大块,每个块为512MB13、 FLASH的一页为1K(小容量和中容量),大容量是2K。
14、系统存储区(SystemMemory)为ST公司出厂配置锁死,用户无法编辑,用于对FLASH 区域进行重新编程。
所以我们烧写程序务必选择BOOT1 = 0,这样通过内嵌的自举程序对FLASH进行烧写,比如中断向量表和代码15、STM32核心电压为16、STM32复位有三种:系统复位、上电复位、备份区域复位。
其中系统复位除了RCC_CSR 中的复位标志和BKP中的数值不复位之外,其他的所有寄存器全部复位。
触发方式例如外部复位、看门狗复位、软件复位等;复位由于外部电源的上电/掉电复位或者待机模式返回。
STM32单片机基础知识
STM32单片机基础知识STMicroelectronics的STM32系列是一系列广受欢迎的32位ARM Cortex-M微控制器(MCU)。
这些单片机被广泛应用于嵌入式系统,因为它们具有高性能、低功耗、丰富的外设和丰富的开发工具生态系统。
1、处理器核心STM32系列单片机采用不同版本的ARM Cortex-M处理器核心,可根据应用的性能和功耗需求进行选择。
从低功耗的Cortex-M0到高性能的Cortex-M7,这些核心提供了广泛的选择,适用于各种嵌入式应用。
选型时需要考虑处理器性能、成本、功耗以及应用的实际需求。
Cortex-M0:特点:Cortex-M0是Cortex-M系列中的低功耗、低成本核心,适用于对功耗有严格要求的应用。
它是一种精简指令集(RISC)架构,具有简化的指令集和低延迟的操作。
性能:Cortex-M0通常具有较低的时钟速度,适用于低复杂度的嵌入式系统。
应用:它常用于传感器、小型家电、智能卡和其他低功耗、成本敏感的应用。
Cortex-M0+:特点:Cortex-M0+是Cortex-M系列中的改进型号,继承了Cortex-M0的低功耗特性,并增加了一些性能和功能。
它具有更高的性能和更多的指令,可提供更好的性价比。
性能:Cortex-M0+通常比Cortex-M0具有更高的时钟速度,同时保持低功耗,适用于中等复杂度的应用。
应用:它常用于物联网设备、便携式医疗设备、智能传感器等。
Cortex-M3:特点:Cortex-M3是Cortex-M系列中的通用用途核心,适用于广泛的应用领域。
它具有较高的性能和更多的功能,适合中等和高复杂度的嵌入式系统。
性能:Cortex-M3通常具有更高的时钟速度和更大的指令集,支持多线程处理,适用于实时操作系统(RTOS)。
应用:它广泛用于工业自动化、消费电子、汽车电子等多个领域,要求高性能和实时性。
Cortex-M4:特点:Cortex-M4是Cortex-M系列中的高性能型号,具有浮点运算单元(FPU),能够进行单精度浮点数运算。
学习STM32笔记汇总
STM32F207学习笔记1、使用篇 (1)1、1标准外设库的简介 (1)1.2标准外设库中一些文件的作用 (2)1.3开发拾遗 (2)2、STM32技术概述 (3)2.1 一些概述 (3)2.2 STM32的最小系统 (3)2.3 一些IO (4)2.31 GPIO与AFIO (4)2.32 RCC 复位与时钟控制 (5)2.33 中断与事件控制 (6)2.34总线结构与存储器: (6)2.35 定时器(是定时还是计数只取决于时钟源) (6)1、使用篇1、1标准外设库的简介在嵌入式设计中,硬件成本不断降低,而软件成本大幅升高,随着新型内核的不断出现,软件底层设计的复杂性和移植的困难度在不断增加,ARM公司意识到这个问题后,联合芯片提供商,为软件人员提供标准的应用程序接口,而CMSIS就是为CONTEX-M3内核提供的。
这些通用的API接口来访问CORTEX 内核以及一些专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。
只要都是基于M3的芯片,代码均是可以复用的。
CMSIS 包含了CORESUPPORT和DECICESUPPORT。
即ARM负责的东西和芯片厂商如ST负责的。
其中ARM提供了core_m3.c和.h。
定义一些CORTEX-M处理器内部的一些寄存器地址以及功能函数。
芯片商提供的启动代码、初始化函数、系统头文件。
为了推广了STM32系列的微处理器芯片,意法半导体可谓是煞费苦心!不光提供了CMSIS要求内容,还提供了各个模块的标准库函数.,包含了所有外设的驱动函数,覆盖每一种外设的所有功能。
可以让程序员将更多的精力放在应用开发,加快上市时间,用标准的ANSI-C编写不受开发环境的影响。
这一系列的辅助文件以固件库(标准外设库)来提供。
那手头上的版本STM32F2xx_StdPeriph_Lib_V1.1.0来说,有三部分构成:1、library:标准外设库的主要内容,由两部分构成①CMSIS(1)ARM公司提供的内核访问函数等。
STM32考试复习(完整版)ppt课件
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单片机的知识点总结
STM32系统结构STM32f10xxx系统结构内核IP从结构框图上看,Cortex-M3内部有若干个总线接口,以使CM3能同时取址和访内(访问内存),它们是:指令存储区总线(两条)、系统总线、私有外设总线。
有两条代码存储区总线负责对代码存储区(即 FLASH 外设)的访问,分别是 I-Code 总线和 D-Code 总线。
I-Code用于取指,D-Code用于查表等操作,它们按最佳执行速度进行优化。
系统总线(System)用于访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片外扩展设备,以及系统级存储区的部分空间。
私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。
它们也在系统级存储区。
还有一个DMA总线,从字面上看,DMA是data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。
简而言之,这个家伙就是一个速度很快的且不受老大控制的数据搬运工。
处理器外设(内核之外的外设)从结构框图上看,STM32的外设有串口、定时器、IO口、FSMC、SDIO、SPI、I2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。
寄存器什么是寄存器?寄存器是内置于各个IP外设中,是一种用于配置外设功能的存储器,并且有想对应的地址。
一切库的封装始于映射。
是不是看的眼都花了,如果进行寄存器开发,就需要怼地址以及对寄存器进行字节赋值,不仅效率低而且容易出错。
库的存在就是为了解决这类问题,将代码语义化。
语义化思想不仅仅是嵌入式有的,前端代码也在追求语义特性。
从点灯开始学习STM32内核库文件分析cor_cm3.h这个头文件实现了:1、内核结构体寄存器定义。
2、内核寄存器内存映射。
3、内存寄存器位定义。
跟处理器相关的头文件stm32f10x.h实现的功能一样,一个是针对内核的寄存器,一个是针对内核之外,即处理器的寄存器。
STM32常见知识点
STM32常见知识点STM32是意法半导体(STMicroelectronics)公司推出的一系列32位微控制器,它具有高性能、低功耗、丰富的外设和灵活的扩展性,被广泛应用于工控、汽车、消费电子等领域。
下面是一些关于STM32的常见知识点。
1. ARM Cortex-M内核:STM32微控制器采用了ARM Cortex-M系列内核,包括Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7,这些内核具有低功耗、高性能和灵活的指令集。
2.外设丰富:STM32微控制器集成了丰富的外设,如通用串行总线(USART)、通用异步接收/发送器(UART)、同步串行通信接口(SPI)、通用定时/计数器(TIM)、模数转换器(ADC)、数字输入/输出(GPIO)等。
这些外设可以满足各种应用的需求。
3.多种存储器:STM32微控制器内部集成了闪存、SRAM和EEPROM等多种存储器,用于存储程序代码和数据。
闪存用于存储程序代码,而SRAM用于存储运行时数据。
EEPROM则用于存储需要频繁修改的数据。
4.低功耗模式:STM32微控制器具有多种低功耗模式,包括停机模式、待机模式和休眠模式等。
这些模式可以帮助系统实现低功耗运行,延长电池寿命。
5.复位和时钟:STM32微控制器有多种复位和时钟选项,包括复位电路、外部高速晶体振荡器、内置振荡器、主从PLL等。
通过这些选项,可以满足不同应用场景的需求。
6.中断和优先级:STM32微控制器支持多种中断和优先级,包括外部中断、定时器中断、串口中断等。
通过合理使用中断和优先级,可以提高系统的实时性能。
7. 调试和编程:STM32微控制器可以通过调试接口(如JTAG和SWD)进行调试和编程。
开发者可以使用调试工具(如ST-Link)连接微控制器并进行调试和烧录操作。
8. 开发平台:STM32微控制器有多种开发平台可供选择,包括STCube和MDK-ARM等。
STM32知识大全解析
STM32知识大全解析一、STM32结构二、GPIO的工作方式1、8种模式在STM32中选用IO模式(1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1(2)带上拉输入_IPU——IO内部上拉电阻输入(3)带下拉输入_IPD——IO内部下拉电阻输入(4)模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。
当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。
可以读IO输入电平变化,实现IO双向功能(6)推挽输出_OUT_PP ——IO输出0-接GND,IO输出1 -接VCC,读输入值是未知的(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)开漏输出:1、只可以输出强低电平,高电平得靠外部电阻拉高。
输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)2、开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。
比如加上上拉电阻就可以提供TTL/CMOS电平输出等。
(上拉电阻的阻值决定了逻辑电平转换的沿的速度。
阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。
)3、开漏提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。
因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。
所以如果对延时有要求,则建议用下降沿输出。
stm32知识点最终版
1.* 嵌入式系统:以计算机技术为基础,以应用为中心,软件硬件可剪裁,适合应用系统对功能可靠性、成本、体积、功耗严格要求的专业计算机系统。
2.*嵌入式系统与传统系统等所区分的三个特征:微处理器通常由 32位以上的RISC组成;软件通常是以嵌入式操作系统为核心,外加用户应用程序;具有明显的可嵌入性。
3.* 嵌入式系统的应用:智能消费电子中;工业控制中;医疗设备中;信息家电及家庭智能管理系统;网络与通信系统中;环境工程;机器人。
4.*ARM定义的三大分工明确的系列:“A”系列面向尖端的基于虚拟存的操作系统和用户应用(针对日益增长的运行包括 linux 、 Window、s CE和 Android 在的消费电子和无线产品);“R”系列针对实时系统(针对需要运行实时操作系统来惊醒控制应用的系统,包括汽车电子、网络和影像系统);“M”系列对胃控制器和点成本应用提供优化(针对开发费用低功耗低,同时针对性能要求不断增加的嵌入式应用而设计,如汽车车身控制系统和各种大型家电)。
5.ARM Cortex处理器系列是基于ARMv7构架的产品,既有ARM Cortex-M系列,也有高性能的A系列。
6.NEON技术是64/128位SIMD指令集,用于新一代媒体和信号处理应用加速。
NEON支持8 位,16位,32位,64位整数及单精度浮点 SIMD操作,以进行音频,视频、图像和游戏的处理。
7.ARM Cortex-M3处理器的特点:性能丰富成本低,低功耗,可配置性能强,丰富的。
8.*STM32F10x处理器分为:101,102,103,105,107。
9.*STM32的总线速度:USB接口速度 12Mb/s;USAR接T 口速度 4.5Mb/s;SPI接口速度可达18Mb/s;IC接口速度 400kHz。
10.STM32系列处理器的优点:先进的部结构;三种功耗控制;最大程度集成整合;出众及创新的外设。
11.STM32F10按x 性能分为:基本型STM32F10,1USB基本型STM32F10,2增强型STM32F10,3互联网型STM32F10、5STM32F10系7列。
Stm32知识点总结
Stm32知识点总结:1.stm32模版:a.CMSIS 标准——stm32结构及库层次关,系解决不同的芯片厂商生产的Cortex微控制器软件的兼容性问题。
(内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由ARM公司提供。
设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。
)b.Libraries文件夹下是驱动库的源代码及启动文件。
c.Project 文件夹下是用驱动库写的例子跟一个工程模板。
d.还有一个已经编译好的HTML文件,是库帮助文档。
内核与外设的库文件分别存放在CMSIS和STM32F10x_StdPeriph_Driver文件夹中。
e.Libraries\CMSIS\CM3文件夹下又分为CoreSupport和DeviceSupport文件夹。
在CoreSupport中的是位于CMSIS标准的核内设备函数层的M3核通用的源文件core_cm3.c 和头文件core_cm3.h。
core_cm3.c屏蔽不同编译器的差异。
core_cm3.c 文件中包含了stdin.h这个头文件主要作用是提供一些新类型定义,这些新类型定义屏蔽了在不同芯片平台时,出现的诸如int的大小是16位,还是32 位的差异。
f.在DeviceSupport文件夹下的是启动文件、外设寄存器定义&中断向量定义层的一些文件,system_stm32f10x.c该文件的功能是设置系统时钟和总线时钟。
stm32f10x.h 这个文件非常重要,是一个非常底层的文件。
所有处理器厂商都会将对内存的操作封装成一个宏,即我们通常说的寄存器,并且把这些实现封装成一个系统文件,包含在相应的开发环境中。
g.Libraries\CMSIS\Core\CM3\startup\arm文件夹下是由汇编编写的系统启动文件,不同的文件对应不同的芯片型号,在使用时要注意。
cl:互联型产品,stm32f105/107系列vl:超值型产品,stm32f100系列xl:超高密度(容量)产品,stm32f101/103系列ld:低密度产品,FLASH小于64Kmd:中等密度产品,FLASH=64 or 128hd:高密度产品,FLASH大于128h.Libraries\STM32F10x_StdPeriph_Driver文件夹下有inc(include 的缩写)跟src(source的简写)这两个文件夹,这都属于CMSIS的设备外设函数部分。
stm32知识点最终版报告
1.*嵌入式系统:以计算机技术为基础,以应用为中心,软件硬件可剪裁,适合应用系统对功能可靠性、成本、体积、功耗严格要求的专业计算机系统。
2.*嵌入式系统与传统系统等所区分的三个特征:微处理器通常由32位以上的RISC组成;软件通常是以嵌入式操作系统为核心,外加用户应用程序;具有明显的可嵌入性。
3.*嵌入式系统的应用:智能消费电子中;工业控制中;医疗设备中;信息家电及家庭智能管理系统;网络与通信系统中;环境工程;机器人。
4.*ARM定义的三大分工明确的系列:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用(针对日益增长的运行包括linux、Windows、CE和Android在内的消费电子和无线产品);“R”系列针对实时系统(针对需要运行实时操作系统来惊醒控制应用的系统,包括汽车电子、网络和影像系统);“M”系列对胃控制器和点成本应用提供优化(针对开发费用低功耗低,同时针对性能要求不断增加的嵌入式应用而设计,如汽车车身控制系统和各种大型家电)。
5.ARM Cortex处理器系列是基于ARMv7构架的产品,既有ARM Cortex-M系列,也有高性能的A系列。
6.NEON技术是64/128位SIMD指令集,用于新一代媒体和信号处理应用加速。
NEON支持8位,16位,32位,64位整数及单精度浮点SIMD操作,以进行音频,视频、图像和游戏的处理。
7.ARM Cortex-M3处理器的特点:性能丰富成本低,低功耗,可配置性能强,丰富的链接。
8.*STM32F10x处理器分为:101,102,103,105,107。
9.*STM32的总线速度:USB接口速度12Mb/s;USART接口速度4.5Mb/s;SPI接口速度可达18Mb/s;IC接口速度400kHz。
10.STM32系列处理器的优点:先进的内部结构;三种功耗控制;最大程度集成整合;出众及创新的外设。
11.STM32F10x按性能分为:基本型STM32F101,USB基本型STM32F102,增强型STM32F103,互联网型STM32F105、STM32F107系列。
STM32知识
STM32知识1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL2、 MCO[2:0]可以提供4源不同的时钟同步信号,PA83、 GPIO口有两个反向串联的二极管用作钳位二极管。
4、 ICode总线,DCode总线、系统总线、DMA总线、总线矩阵、AHB/APB桥5、在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟6、 STM32复位有三种:系统复位、上电复位、备份区域复位。
其中系统复位除了RCC_CSR中的复位标志和BKP中的数值不复位之外,其他的所有寄存器全部复位。
触发方式例如外部复位、看门狗复位、软件复位等;电源复位由于外部电源的上电/掉电复位或者待机模式返回。
复位除了BKP中的寄存器值不动,其他全部复位;备份区域复位的触发源为软件复位或者VDD和VBAT全部掉电时。
7、 (NestedVectored Interrupt Controller)NVIC嵌套向量中断控制器,分为两种:抢先式优先级(可嵌套)和中断优先级(副优先级,不能嵌套)。
两种优先级由4位二进制位决定。
分配下来有十六种情况:8、自动装载寄存器和影子寄存器:前者相当于51当中的溢出设定数值。
而影子寄存器顾名思义是影子,就是寄存器的另一分copy。
实际起作用的是影子寄存器,而程序员操纵的则是自动装载寄存器。
如果APPE位使能,表明自动装载寄存器的值在下一次更新事件发生后才写入新值。
否则,写入自动装载寄存器的值会被立即更新到影子寄存器。
9、计数器的数值与输出比较器相等时,翻转输出信号10、ARM公司只生产内核标准,不生产芯片。
ST、TI这样的公司从ARM公司那里购买内核,然后外加自己的总线结构、外设、存储器、时钟和复位、I/O后就组成了自己的芯片。
中,TPAD可以用一块覆铜区域来替代,通过电容的充放电常数来确定是否按下。
屏幕的对应表PAGE2单独列出来:13、USART可以操纵SPI设备。
STM32相关知识点总结
精心整理GPIO篇GPIO寄存器端口配置低位寄存器CRL; 32位端口配置高位寄存器CRH; 32位端口输入数据寄存器IDR; 32位端口输出数据寄存器ODR; 32位置位/复位寄存器BSRR; 32位复位寄存器BRR; 16位锁定寄存器LCKR; 32位GPIO库函数stm32f10x_gpio.hvoidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);GPIO相关类型名typedefstruct typedefstruct{ {__IOuint32_tCRL; uint16_tGPIO_Pin;__IOuint32_tCRH; GPIOSpeed_TypeDefGPIO_Speed;__IOuint32_tIDR; GPIOMode_TypeDefGPIO_Mode;__IOuint32_tODR; }GPIO_InitTypeDef;__IOuint32_tBSRR; typedefenum__IOuint32_tBRR; { Bit_RESET=0,__IOuint32_tLCKR; Bit_SET}GPIO_TypeDef;}BitAction;GPIO_Pin取值#defineGPIO_Pin_0 #defineGPIO_Pin_6 #defineGPIO_Pin_12#defineGPIO_Pin_1 #defineGPIO_Pin_7 #defineGPIO_Pin_13#defineGPIO_Pin_2 #defineGPIO_Pin_8 #defineGPIO_Pin_14#defineGPIO_Pin_3 #defineGPIO_Pin_9 #defineGPIO_Pin_15#defineGPIO_Pin_4 #defineGPIO_Pin_10 #defineGPIO_Pin_All#defineGPIO_Pin_5#defineGPIO_Pin_11中断篇NVIC相关寄存器AIRCR寄存器P139中断使能设置寄存器ISER VECTKEY 31:16D R/W中断使能清除寄存器ICER ENDIANESS 15D R中断悬挂设置寄存器ISPR PRIGROUP 10:8D R/W中断悬挂清除寄存器ICPR SYSRESETREQ 2D W中断激活位寄存器IABR VECTCLRACTIVE 1D W中断优先级寄存器IP VECTRESET 0D W软件触发中断寄存器STIRTVOR寄存器P138TBLBASE29段R/WTBLOFF 28:7段R 向量表起始地址EXTI相关寄存器中断屏蔽寄存器EXTI_IMR 设置是否屏蔽中断请求线上的中断请求事件屏蔽寄存器EXTI_EMR 设置是否屏蔽事件请求线上的中断请求上升沿触发选择寄存器EXTI_RTSR 设置是否用上升沿来触发中断和事件下降沿触发选择寄存器EXTI_FTSR 设置是否用下降沿来触发中断和事件软件中断事件寄存器EXTI_SWIER 用于软件触发中断/事件挂起寄存器EXTI_PR 用于保存中断/事件请求线上是否有请求AFIO寄存器AFIO_EVCR 事件控制寄存器AFIO_EXTICRx 外部中断配置寄存器AFIO_MAPR 复用重映射和调试I/O配置寄存器系统控制寄存器SCB p138EXTI相关库函数stm32f10x_exti.hvoidGPIO_EXTILineConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource);设置IO口与中断线的映射关系voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct); 初始化中断线:触发方式等ITStatusEXTI_GetITStatus(uint32_tEXTI_Line); 判断中断线中断状态,是否发生voidEXTI_ClearITPendingBit(uint32_tEXTI_Line); 清除中断线上的中断标志位AFIO相关函数stm32f10x_rcc.h stm32f10x_gpio.hRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 使能AFIO时钟GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE); 开启重映射根据第一个参数,来确定是部分重映射还是全部重映射NVIC相关函数core_cm3.h misc.hvoidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup); 中断优先级分组函数voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct); 中断参数初始化函数static__INLINEvoidNVIC_SetPendingIRQ(IRQn_TypeIRQn);挂起中断static__INLINEuint32_tNVIC_GetPendingIRQ(IRQn_TypeIRQn);static__INLINEvoidNVIC_ClearPendingIRQ(IRQn_TypeIRQn) 解挂中断static__INLINEuint32_tNVIC_GetActive(IRQn_TypeIRQn) IABREXTI相关类型名GPIO_PortSource取值typedefstruct#defineGPIO_PortSourceGPIOA {#defineGPIO_PortSourceGPIOB uint32_tEXTI_Line;#defineGPIO_PortSourceGPIOC EXTIMode_TypeDefEXTI_Mode;#defineGPIO_PortSourceGPIOD EXTITrigger_TypeDefEXTI_Trigger;#defineGPIO_PortSourceGPIOE FunctionalStateEXTI_LineCmd;#defineGPIO_PortSourceGPIOF }EXTI_InitTypeDef;GPIO_PinSource取值#defineGPIO_PinSource0 #defineGPIO_PinSource6 #defineGPIO_PinSource12 #defineGPIO_PinSource1 #defineGPIO_PinSource7 #defineGPIO_PinSource13#defineGPIO_PinSource2 #defineGPIO_PinSource8 #defineGPIO_PinSource14#defineGPIO_PinSource3 #defineGPIO_PinSource9 #defineGPIO_PinSource15#defineGPIO_PinSource4 #defineGPIO_PinSource10#defineGPIO_PinSource5 #defineGPIO_PinSource11EXTI_Line取值#defineEXTI_Line0 #defineEXTI_Line7 #defineEXTI_Line14#defineEXTI_Line1 #defineEXTI_Line8 #defineEXTI_Line15#defineEXTI_Line2 #defineEXTI_Line9 #defineEXTI_Line16#defineEXTI_Line3 #defineEXTI_Line10 #defineEXTI_Line17#defineEXTI_Line4 #defineEXTI_Line11 #defineEXTI_Line18#defineEXTI_Line5 #defineEXTI_Line12 #defineEXTI_Line19#defineEXTI_Line6 #defineEXTI_Line13typedefstruct typedefenum typedefenum p145{ { {__IOuint32_tIMR; EXTI_Mode_Interrupt=0x00, E XTI_Trigger_Rising=0x08,__IOuint32_tEMR; EXTI_Mode_Event=0x04 EXTI_Trigger_Falling=0x0C,__IOuint32_tRTSR; }EXTIMode_TypeDef;EXTI_Trigger_Rising_Falling=0x10__IOuint32_tFTSR; }EXTITrigger_TypeDef;__IOuint32_tSWIER;__IOuint32_tPR;}EXTI_TypeDef;NVIC相关类型名typedefstruct NVIC_PriorityGroup取值{ #defineNVIC_PriorityGroup_0uint8_tNVIC_IRQChannel; #defineNVIC_PriorityGroup_1uint8_tNVIC_IRQChannelPreemptionPriority; #defineNVIC_PriorityGroup_2uint8_tNVIC_IRQChannelSubPriority; #defineNVIC_PriorityGroup_3 FunctionalStateNVIC_IRQChannelCmd;#defineNVIC_PriorityGroup_4}NVIC_InitTypeDef;AFIO相关类型名typedefstruct{__IOuint32_tEVCR;__IOuint32_tMAPR;__IOuint32_tEXTICR[4];__IOuint32_tMAPR2;}AFIO_TypeDef;USART篇USART相关寄存器状态寄存器USART_SR 反映USART单元状态数据寄存器USART_DR 用于保存接收或发送的数据波特比率寄存器USART_BRR 用于设置USART的波特率控制寄存器1 USART_CR1 用于控制USART控制寄存器2 USART_CR2 用于控制USART控制寄存器3 USART_CR3 用于控制USART保护时间和预分频寄存器USART_GTPR 保护时间和预分频USART相关库函数stm32f10x_usart.hvoidUSART_Init();串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能voidUSART_Cmd(); 使能串口voidUSART_ITConfig(); 使能相关中断voidUSART_SendData(); 发送数据到串口,DRvoidUSART_ClearFlag(); 清除状态标志位voidUSART_ClearITPendingBit(); 清除中断状态标志位uint16_tUSART_ReceiveData(); 接受数据,从DR读取接受到的数据FlagStatusUSART_GetFlagStatus(); 获取状态标志位ITStatusUSART_GetITStatus(); 获取中断状态标志位USART_DeInit(); 串口复位FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint16_tUSART_FLAG); voidUSART_ClearITPendingBit(USART_TypeDef*USARTx,uint16_tUSART_IT);串口传输状态获取USART相关类型名typedefstructp168 t ypedefstruct{ {__IOuint16_tSR;uint32_tUSART_BaudRate;波特率__IOuint16_tDR; uint16_tUSART_WordLength;字长__IOuint16_tBRR; uint16_tUSART_StopBits;停止位长度__IOuint16_tCR1; uint16_tUSART_Parity;奇偶校验__IOuint16_tCR2; uint16_tUSART_Mode;接收或发送模式__IOuint16_tCR3; uint16_tUSART_HardwareFlowControl;硬件流控制__IOuint16_tGTPR; }USART_InitTypeDef;}USART_TypeDef; typedefenum{DISABLE=0,ENABLE=!DISABLE}FunctionalState;USART_IT取值#defineUSART_IT_PE#defineUSART_IT_IDLE #defineUSART_IT_ORE #defineUSART_IT_TXE#defineUSART_IT_LBD#defineUSART_IT_NE#defineUSART_IT_TC#defineUSART_IT_CTS#defineUSART_IT_FE#defineUSART_IT_RXNE#defineUSART_IT_ERRUSART_FLAG取值typedefstructp169#defineUSART_FLAG_CTS#defineUSART_FLAG_IDLE{uint16_tUSART_Clock#defineUSART_FLAG_LBD#defineUSART_FLAG_OREuint16_tUSART_CPOL;#defineUSART_FLAG_TXE#defineUSART_FLAG_NEuint16_tUSART_CPHA;#defineUSART_FLAG_TC#defineUSART_FLAG_FEuint16_tUSART_LastBit;#defineUSART_FLAG_RXNE#defineUSART_FLAG_PE}USART_ClockInitTypeDef;通用定时器篇TIMx相关寄存器p189计数器当前值寄存器CNT预分频寄存器TIMx_PSC自动重装载寄存器TIMx_ARR控制寄存器1TIMx_CR1控制寄存器2TIMx_CR2DMA中断使能寄存器TIMx_DIERTIMx相关库函数stm32f10x_tim.hvoidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);定时器参数初始化voidTIM_Cmd(TIM_TypeDef*TIMx,FunctionalStateNewState)定时器使能函数状态标志位获取和清除FlagStatusTIM_GetFlagStatus(TIM_TypeDef*TIMx,uint16_tTIM_FLAG);voidTIM_ClearFlag(TIM_TypeDef*TIMx,uint16_tTIM_FLAG);ITStatusTIM_GetITStatus(TIM_TypeDef*TIMx,uint16_tTIM_IT);voidTIM_ClearITPendingBit(TIM_TypeDef*TIMx,uint16_tTIM_IT);TIMx相关类型名TIM_TypeDefp191typedefstruct TIM_IT取值{#defineTIM_IT_Update#defineTIM_IT_CC4uint16_tTIM_Prescaler;#defineTIM_IT_CC1#defineTIM_IT_COMuint16_tTIM_CounterMode;#defineTIM_IT_CC2#defineTIM_IT_Triggeruint16_tTIM_Period;#defineTIM_IT_CC3#defineTIM_IT_Breakuint16_tTIM_ClockDivision;uint8_tTIM_RepetitionCounter;}TIM_TimeBaseInitTypeDef;TIM_FLAG取值#defineTIM_FLAG_Update#defineTIM_FLAG_CC4#defineTIM_FLAG_CC1OF#defineTIM_FLAG_CC1#defineTIM_FLAG_COM#defineTIM_FLAG_CC2OF#defineTIM_FLAG_CC2#defineTIM_FLAG_Trigger#defineTIM_FLAG_CC3OF#defineTIM_FLAG_CC3#defineTIM_FLAG_Break#defineTIM_FLAG_CC4OFRTC篇RTC相关寄存器P210RTC控制寄存器(RTC_CRH,RTC_CRL)RTC预分频装载寄存器(RTC_PRLH,RTC_PRLL)RTC预分频余数寄存器(RTC_DIVH,RTC_DIVL)RTC计数器寄存器(RTC_CNTH,RTC_CNTL)RTC闹钟寄存器(RTC_ALRH,RTC_ALRL)备份寄存器BKP_DRx(x=11~42)RTC相关库函数stm32f10x_rtc.hstm32f10x_pwr.hstm32f10x_rcc.hstm32f10x_bkp.hvoidRTC_ITConfig(uint16_tRTC_IT,FunctionalStateNewState);RTC中断设置函数voidRTC_EnterConfigMode(void);允许RTC配置:CRL位CNFvoidRTC_ExitConfigMode(void);退出配置模式:CRL位CNFvoidRTC_SetCounter(uint32_tCounterValue);设置计数器值:CNTH/CNTL voidRTC_SetPrescaler(uint32_tPrescalerValue);预分频配置:PRLH/PRLL voidRTC_SetAlarm(uint32_tAlarmValue);闹钟设置:ALRH/ALRLvoidRTC_WaitForLastTask(void);等待上次操作完成:CRL位RTOFF voidRTC_WaitForSynchro(void);等待时钟同步:CRL位RSFvoidRTC_ClearITPendingBit(uint16_tRTC_IT);voidRTC_ClearFlag(uint16_tRTC_FLAG);voidRCC_RTCCLKConfig(uint32_tCLKSource);//时钟源选择voidRCC_RTCCLKCmd(FunctionalStateNewState)//时钟使能FlagStatusRTC_GetFlagStatus(uint16_tRTC_FLAG);ITStatusRTC_GetITStatus(uint16_tRTC_IT);uint32_tRTC_GetCounter(void);uint32_tRTC_GetDivider(void);PWR_BackupAccessCmd();//BKP后备区域访问使能RCC_APB1PeriphClockCmd()//使能PWR和BKP时钟RCC_LSEConfig();//开启LSE,RTC选择LSE作为时钟源uint16_tBKP_ReadBackupRegister(uint16_tBKP_DR);//读BKP寄存器voidBKP_WriteBackupRegister(uint16_tBKP_DR,uint16_tData);//写BKPRTC相关类型名RTC_IT取值RCC_LSE取值BKP_DR取值#defineRTC_IT_OW#defineRCC_LSE_OFF#defineBKP_DR1#defineRTC_IT_ALR#defineRCC_LSE_ON.....#defineRTC_IT_SEC#defineRCC_LSE_Bypass#defineBKP_DR42RTC_FLAG取值RCC_RTCCLKSource取值#defineRTC_FLAG_RTOFF#defineRCC_RTCCLKSource_LSE#defineRTC_FLAG_RSF#defineRCC_RTCCLKSource_LSI#defineRTC_FLAG_OW#defineRCC_RTCCLKSource_HSE_Div128#defineRTC_FLAG_ALR#defineRTC_FLAG_SEC。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.*嵌入式系统:以计算机技术为基础,以应用为中心,软件硬件可剪裁,适合应用系统对功能可靠性、成本、体积、功耗严格要求的专业计算机系统。
2.*嵌入式系统与传统系统等所区分的三个特征:微处理器通常由32位以上的RISC组成;软件通常是以嵌入式操作系统为核心,外加用户应用程序;具有明显的可嵌入性。
3.*嵌入式系统的应用:智能消费电子中;工业控制中;医疗设备中;信息家电及家庭智能管理系统;网络与通信系统中;环境工程;机器人。
4.*ARM定义的三大分工明确的系列:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用(针对日益增长的运行包括linux、Windows、CE和Android在内的消费电子和无线产品);“R”系列针对实时系统(针对需要运行实时操作系统来惊醒控制应用的系统,包括汽车电子、网络和影像系统);“M”系列对胃控制器和点成本应用提供优化(针对开发费用低功耗低,同时针对性能要求不断增加的嵌入式应用而设计,如汽车车身控制系统和各种大型家电)。
5.ARM Cortex处理器系列是基于ARMv7构架的产品,既有ARM Cortex-M系列,也有高性能的A系列。
6.NEON技术是64/128位SIMD指令集,用于新一代媒体和信号处理应用加速。
NEON支持8位,16位,32位,64位整数及单精度浮点SIMD操作,以进行音频,视频、图像和游戏的处理。
7.ARM Cortex-M3处理器的特点:性能丰富成本低,低功耗,可配置性能强,丰富的链接。
8.*STM32F10x处理器分为:101,102,103,105,107。
9.*STM32的总线速度:USB接口速度12Mb/s;USART接口速度4.5Mb/s;SPI接口速度可达18Mb/s;IC接口速度400kHz。
10.STM32系列处理器的优点:先进的内部结构;三种功耗控制;最大程度集成整合;出众及创新的外设。
11.STM32F10x按性能分为:基本型STM32F101,USB基本型STM32F102,增强型STM32F103,互联网型STM32F105、STM32F107系列。
12.STM32F103RBT6系列的命名规则:R-引脚数量、B-Flash大小、T-封装、6-工作温度。
13.*STM32F103按照引脚功能分为:电源、复位、时钟控制、启动配置、输入输出口。
14.STM32F103总线系统包括:驱动单元、被动单元、总线矩阵。
15.最小系统是指仅包含必须的元器件、仅可运行最基本软件的基本系统。
16.典型的最小系统包括:微控制器芯片、供电电路、时钟电路、复位电路、启动配置电路和程序下载电路。
第三章1.STM32标准库命名则:PPP_Init:根据PPP_InitTypeDef中指定的参数初始化外设ppp;PPP_DeInit:将外设PPP寄存器重设为缺省值;PPP_StructInit:将PPP_InitTypeDef结构中的参数设为缺省值;PPP_Cmd:使能或失能PPP外设;PPP_ItConfig:使能或失能PPP外设的中断源;PPP_GetITStatus:判断PPP外设中断发生与否;PPP_ClearITPendingBit:清除PPP外设中断待处理标志位;PPP_DMAConfig:使能或者失能PPP外设的DMA接口;PPP_GetFlagStatus:检查PPP外设的标志位;PPP_ClearFiag:清除PPP外设的标志位。
2.文件结构:每个C程序通常分为两个文件,一个文件用于保存程序的声明,成为头文件,以.h为后缀。
另一个用于保存程序的实现,称为源文件,以.c后缀。
3.C语言的关键字有32个,根据作用分为数据类型、控语言、储存类型、其他关键字。
4.指针:是C语言中广泛使用的一种数据类型.5.指向数组元素的指针定义一个整形数组和一个指向整型的指针变量:Int a [10];Int*p=NULL;//定义指针式要初始化P=a;//数组名a为数组第0个元素的地址//与p=&a[0]等价P+i和a+i表示a[i]的地址;*(p+i)和*(a+i)表示P+i和a+i内容。
6.结构体:是由基本数据类型构成的,并并一个标识符来命名的各种变量的组合。
7.定义结构体的格式一般为:Struct结构名{类型变量名;...}结构变量;如果去掉结构变量,就成为对结构的说明。
8.CMSIS是独立于供应商处理器硬件抽象层。
9.CMSIS软件架构:用户应用层,操作系统及中间件接口层,CMSIS层和硬件层。
10.CMSIS层主要由:核内外设访问层CPAL;中层件访问层MWAL;设备外设访问层DPAL。
11.STN32F10x标准外设库是一个固件函数包。
由程序、数据结构、宏组成。
12.Libraries文件夹下是标准库的源代码及启动文件。
13.Startup_stm32f10x_X.s是用汇编写的系统启动文件,X表示不同芯片型号。
14.初始化时钟:执行main()函数前调用SystemInit()函数初始化系统时钟。
15.Project文件夹下是采用标准库写的一个工程模版和例子。
(图3-4)16.Const的作用:声明只读变量。
Typedef:给数据类型取别名。
Volatile:说明变量在程序执行中。
第四章1.IO端口的多种模式:输入浮空(什么都不接)、输入上拉(接上拉电阻,输入高电平)、输入下拉、模拟输入(ADC)、开漏输入(本身不输出电压,接上拉电阻)、推挽式输出(直接输出高低电平)、推挽式复用功能、开漏复用功能。
2.GPIO常用库函数:GPIO-init(根据GPIO-Initstruct指定的参数初始化外设GPIOx寄存器)、GPIO_ReadInputDataBit(读取指定端口管脚的输入)、GPIO_ReadInputData(读取指定的GPIO端口输入)、GPIO_ReadOutputDataBit、GPIO_ReadOutputdata、GPIO_SetBits(设定指定的数据端口位)、GPIO_ResetBits(清除指定的数据端口位)、GPIO_WriteBits(设置或清除指定的数据端口位)、GPIO_Write(向指定GPIO端口写入数据)、GPIO_EXTILineConfig(选择GPIO管脚用作外部中断线路)3.*gpio使用流程:声明GPIO初始化结构体GPIO_InitTypeDef-->使能GPIO端口时钟RCC_APB2PeriphClockCmd--> 填充GPIO初始化结构体参数GPIO_Pin、GPIO_Speed、GPIO_Mode--> 完成GPIO端口设置GPIO_Init。
4.闪烁灯程序流程图:GPIO配置GPIO_Config --> 输出低电平,点亮LED,GPIO_ResetBits--> 延时delay--> 输出高电平,熄灭LED,GPIO_SetBits第5章.STM32单片机外部中断一、中断的相关概念1.中断:单片机执行主程序时,由于某个事件的原因,暂停主程序的执行,调用相应的程序处理该事件,处理完毕后再自动继续执行主程序的过程。
2. 中断的优先级:由中断的嵌套可以看出,不同事件的重要程度不同。
重要的事件可以打断相对不重要的事件的处理,用户可以根据自己的需求对不同的事件设定重要级别3. 中断的嵌套:如果在执行一个中断时又被另一个更重要的事件打断,暂停该中断处理过程转去处理这个更重要的事件,处理完毕后再继续处理本中断的过。
低优先级的中断服务可被高优先级中断源中断,反之不能;任何一种中断,一旦响应不会被同级中断源的请求所打断4. 中断源:可以引起中断的事件称为中断源5. 中断服务程序与中断向量:为了处理中断而编写的程序称为中断服务程序,对应中断服务程序的入口地址被称为中断向量6. 中断请求、中断响应、中断处理及中断返回:中断源对主程序或中断服务程序提出中断要求,叫作中断请求;主程序或中断服务程序接受中断请求,进入中断服务程序的过程叫作中断响应;执行中断服务程序的过程叫作中断处理;中断服务程序执行完毕后回到主程序或者次一级别中断服务程序的过程叫作中断返回7. 中断系统:实现中断处理功能的软件、硬件系统称为中断系统二、中断控制器1.STM32F103的中断系统由嵌套中断向量控制器NVIC,外部中断/事件控制器EXTI,各外设中断控制部份2.配置软硬件中断/事件请求过程:硬件中断选择;硬件事件选择;软件中断/事件选择;外部中断/事件线路映射。
图5-4(85页)三、中断执行过程和中断嵌套:优先级:抢占优先级高的先处理,抢占优先级相同,则响应优先级高的先执行。
四、外部应用中断设计:(1)NVIC_PriorityGroupConfig(设置优先级分组,抢占优先级和响应优先级)例:NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1)设置优先级分组为第一组(2)NVIC_Init(根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器)五、EXTI函数库:EXTI_Init(将外设EXTI寄存器重设为缺省值)、EXTI_GetFlagStatus(检查指定的EXTI线路标志位设置与否)、EXTI_ClearFlag(清除EXTI线路挂起标志位)、EXTI_GetITStatus(检查指定的EXTI线路触发请求发生与否)、EXTI_ClearITPendingBits(清除EXTI线路挂起位)。
六、STM32中断的设计(1)NVIC设置流程:声明NVIC结构体NVIC_InitTypeDef S 选择中断分组NVIC_PriorityGroupConfig()—》选择中断通道S.NVIC_IRQChannel—》设置优先抢占级S.NVIC_IRQChannelPreemptionPriority—》设置响应优先级S.NVIC_IRQChannelSubPriority中断使能S.NVIC_IRQChannelCmd —》调用函数完成配置NVIC_Init()(2)GPIO外部中断端口配置流程图:声明GPIO和EXTI结构体GPIO_InitTypeDef G EXTI_InitTypeDef E-->GPIO设置-->选择中断管脚GPIO_EXTILineConfig()--> 选择中断线路E.EXTI_Line--> 设置中断请求E.EXTI_Mode --> 设置中断触发方式E.EXTI_trigger --> 中断线路使能E.EXTI_LineCmd --> 完成设置EXTI_Init(3)中断服务程序处理流程图:进入中断--> 检测中断线请求EXTI_GetITStatus中断处理内容Func()--> 清除中断信号挂起位EXTI_GetITStatus()--> 中断返回(4)按键中断控制LED程序流程图:开始--> LED初始化配置LED_Config--> 按键初始化配置KEY_Config--> 输出低电平,点亮LEDGPIO_ResetBits--> 死循环等待按键中断while(1)进入中断--> 检测中断线请求EXTI_GetITStatus--> LED状态取反GPIO_WriteBits 清除中段线路挂起位EXTI_GetITStatus --> 跳出中断(5)中断服务程序主要完成什么工作:中段线路状态检测、中断处理内容、中断清除(6)Stm32最多支持84个中断16个优先级(7)32中断设计包括NVIC设计、中断端口设置、终端服务程序第6章.STM32通用定时器1.STM定时器分类:2个高级控制定时器TIM1 TIM8可分配6个通道的三相PWM发生器(多用于电机控制);4个通用定时器TIM2 TIM3 TIM4 TIM5每个定时器有4个输入捕获/输出比较/PWM/脉冲计数;2个基本定时器TIM6 TIM7 主要用于产生DAC触发信号;还有两个看门狗定时器(窗口和独立)和一个系统滴答定时器。