STM32自学整理
- 格式:docx
- 大小:15.93 KB
- 文档页数:2
STM32学习笔记目录STM32学习笔记 (1)一、入门 (2)目标->实战项目 (2)STM32学习方法 (3)ARM简介 (4)二、外设功能模块 (5)GPIO原理与工作模式 (5)串行通信 (6)硬件下载与调试 (6)Cortex-M3复用功能(AF)和重映射功能 (6)Systick的使用 (7)通用定时器 (7)SPI与数码管 (7)I2C通信 (8)NVIC中断 (8)PWM基础 (9)RCC内部结构与原理 (9)ADC模数转换 (10)内部温度传感器 (10)窗口看门狗 (10)USB应用 (11)三、问题 (11)在线调试 (12)一、入门STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,主要包括STM32F101“基本型”系列、STM32F103“增强型”系列、STM32F105、STM32F107“互联型”系列。
STM32微控制器满足嵌入式开发低功耗和高性能的要求,并且拥有简单易上手的固件函数库,避免了传统ARM单片机开发操作寄存器的模式,所以十分受欢迎,应用广泛。
作者只学过一些51单片机的基础,就直接上手STM32,边学边用。
该篇笔记也是随意的记录一下,要想系统的学习一下,个人认为资料手册(data sheet)、参考手册(Reference Manual)和用户手册(固件函数库)三个文档再有开发板实际操作,完全足够。
熟练掌握以上内容,触类旁通,成为STM32开发的高手指日可待。
目标->实战项目STM32学习方法开发环境(MDK/IAR)→寄存器or固件库→软件仿真&开发板硬件→学习难度建立不受库版本限制的工程项目:1.准备好文件(Startup Code、Lib、User)2.建立工程不添加Startup Code3.工程管理添加需要的库文件、自定义文件4.编译链接ARM简介ARM7衍生出全新的Cortex架构,三管齐下:Cortex-A:高性能应用处理器。
STM32学习笔记1009132.阅读gpio:I/O设置函数我的理解——所有输入输出管脚模式设置,可以是上下拉、浮空、开漏、模拟、推挽模式,频率特性为2M,10M,50M。
也可以向该管脚直接写入数据和读取数据。
基础应用1,gpio初始化函数。
所有程序必须。
用法:void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure; //GPIO状态恢复默认参数GPIO_InitStructure.GPIO_Pin = GPIO_Pin_标号 | GPIO_Pin_标号 ;//管脚位置定义,标号可以是NONE、ALL、0至15。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//输出速度2MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入模式GPIO_Init(GPIOC, &GPIO_InitStructure); //C组GPIO初始化//注:以上四行代码为一组,每组GPIO属性必须相同,默认的GPIO参数为:ALL,2MHz,FLATING。
如果其中任意一行与前一组相应设置相同,那么那一行可以省略,由此推论如果前面已经将此行参数设定为默认参数(包括使用GPIO_InitTypeDef GPIO_InitStructure代码),本组应用也是默认参数的话,那么也可以省略。
以下重复这个过程直到所有应用的管脚全部被定义完毕。
……}基础应用2,向管脚写入0或1用法:GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)0x01);//写入11,介绍几个特殊的文件stm32f10x_type.h 所有其他文件使用的通用数据类型和枚举stm32f10x_map.h 外设存储器映像和寄存器数据结构唯一的一个用户需要包括在自己应用中的文件stm32f10x_lib.h 主头文件,包含了其他头文件stm32f10x_lib.c Debug模式下初始化所有外设的指针stm32f10x_it.h 该头文件包含了所有的中断处理程序的原形cortexm3_macro.h 文件cortexm3_macro.s对应的头文件cortexm3_macro.s Cortex-M3内核特殊指令的指令包装stm32f10x_ppp.h 外设PPP的头文件。
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是STMicroelectronics推出的一系列32位单片机产品,结合了ARM Cortex-M内核和丰富的外设,被广泛应用于嵌入式系统开发和物联网领域。
学习STM32项目的教学方法对于初学者来说非常重要,下面将总结一下相关的参考内容。
1. 基础知识学习:学习STM32项目之前,需要掌握一些基础的知识,如C语言、数字电路、嵌入式系统等。
可以参考的参考书有《C Primer Plus》、《C语言程序设计》等。
2. STM32的官方文档和资料:STMicroelectronics官网提供了大量的STM32产品的官方文档和资料,包括参考手册、数据手册、应用笔记、应用指南等。
这些资料详细介绍了STM32产品的各个外设,使用方法以及相关的实例代码,非常适合初学者参考。
3. 开发板和工具:学习STM32项目需要一个开发板和相应的开发工具。
推荐的开发板有STM32F4 Discovery和STM32F103C8T6等,这些开发板具有丰富的外设和较低的价格,非常适合学习和实验。
开发工具方面,可以选择ST官方提供的IDE软件:STM32CubeIDE,也可以选择Keil MDK、IAR Embedded Workbench等。
4. 参考书籍:有一些经典的STM32项目教学书籍,可以帮助初学者更好地理解和掌握相关内容。
如《STM32F4xx例程教程》、《STM32单片机应用开发实战指南》等。
5. 在线教程和视频:有很多网上的STM32项目教学资源,如各种博客、技术论坛等。
这些资源提供了许多实际项目的案例和代码,可以帮助初学者更加深入地学习和实践。
此外,还有一些视频教程,比如在B站等视频平台的STM32项目教学视频,通过视频演示的方式,可以更加直观地理解和学习。
6. 社区和论坛:加入STM32相关的技术社区和论坛也是一个不错的选择。
在这些社区和论坛中,你可以和其他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具有较高的抗干扰能力和稳定性,可以在汽车电子系统中发挥重要作用。
它可以用于车身电子、发动机控制、车载娱乐系统等。
1、迷你版stm32共有64个引脚,分为4组ABCD,每组16个引脚
2、关于BSRR、BRR、ODR寄存器的区别于联系(BSRR可以只对一位操作而不影响其他位)
3、IO口时钟使能位设置函数: stm32f10x_rcc.h中第692、693、694行的函数:
RCC_AHBPeriphClockCmd
RCC_APB2PeriphClockCmd
RCC_APB1PeriphClockCmd
4、IO口使能参数定义在stm32f10x_rcc.h中的466行--554行:
5、关于IO口使能设置的方式:①首先查看硬件,找到对应要使用的IO口
②然后找到系统IO口使能参数的定义
③然后确定使能的位设置函数(RCC_AHBP eriphClockCmd,
RCC_APB2PeriphClockCmd,RCC_APB1PeriphClockCmd
中的一个)
④最后在main函数里面设置使能。
MDK:
6、GPIO寄存器描述:《STM32中文参考手册_V10》第八章。
其中,-GPIOx_CRL和-GPIOx_CRH用于配置GPIO的八种模式和三种最大输出速度。
-GPIOx_IDR用于读取IO口输入的电平(0或者1)。
-GPIOx_ODR和-GPIOx_BSRR以及-GPIOx_BRR都是用来设置IO口的输出(0或者1)。
以下为详细解释:
①、-GPIOx_CRL:32位寄存器,只能配置低八位的IO口。
手把手教你STM32笔记stm32f1031、io口处理io口包含7个寄存器配置寄存器两个:crl(32),crh(32)数据寄存器两个:idr(32),odr(32),但是他们就用了16边线位登位寄存器:bsrr(32)登位寄存器:brr(16)锁存寄存器:lckr(32)常用的有前面四个:其中前面两个是用来设置的,后面两个是用来操作的。
每个io 口占用四位进行设置(低两位是mode,高两位是cnf),每组16个,总共需要64个位设置,分别从crl低位开始,到crh的高位结束。
每个io口四位二进制的常用布局:演示输出模式(adc):0x0;推挽输出模式(输出口50mhz):0x3;上/下拉输入模式(输入口用):0x8;复用输出(第二供能):0xb;stm32f407自学笔记1、系统时钟的设置:stm32_clock_init(168,4,2,7);参数分别就是:plln,pllm,pllp,pllqhse分频pllm之后为vco的输入,一般vco的输入要求为1~2mhz,一般建议取为2mhz,防止pll抖动。
vco输出是输入的plln倍频,sysclk在去pll输出时,sysclk=pll=hse/pllm*plln/pllp而pllq是为48mhz时钟配置用的,clk48=hse/pllm*plln/pllq所以要设置系统时钟为168mhz时候推荐的参数取值为sysclk=pll=hse/pllm*plln/pllp=8/4*168/2=168mhzclk48=hse/pllm*plln/pllq=8/4*168 /7=48mhz2、延时函数设置:delay_init(168);延时函数参数为系统时钟sysclk初始化后就可以调用延时函数:delay_ms(ms);参数不能大于65536,因为参数是16位数delay_us(us);参数不能大于7989153、普通io的使用a.首先是使能时钟rcc->ahb1enr|=1<<5;在该寄存器适当的边线1即可b.io口模式设置:gpio_set(gpiof,pin9|pin10,gpio_mode_out,gpio_otype_pp,gpio_speed_100m,gpio_pup d_pu);参数分别就是:gpiox,pin9|pin10(具体对应的口,可以使用与的关系)因为每种占一位#definepin0#definepin1#definepin2#definepin3#definepin4#definepin5#definepin6#definepin7#definepin8#definepin9#definepin10#definepin11#definepin12#definepin 13#definepin14#definepin151<<01<<11<<21<<31<<41<<51<<61<<71<<81<<91<<101<<111<<121<<131<<141<<15mode:四种,各个模式只能设置一种#definegpio_mode_in0#definegpio_mode_out//普通输出模式1//普通输出模式#definegpio_mode_af#definegpio_mode_ain输入推挽或者开漏挑选:#definegpio_otype_pp#definegpio_otype_od23//af功能模式//演示输出模式01//推挽输入//开漏输入推挽输出可输出强的高、低电平,用于连接数字器件开漏输入相等于三极管的集电极,电流型驱动,只可以输入弱的低电平,高电平需外扎。
STM32F103C8自学整理
一.RCC的配置函数调用/* 设置系统时钟*/RCC_Configuration(); void RCC_Configuration(void)
{
/* 定义枚举类型变量HSEStartUpStatus */
ErrorStatus HSEStartUpStatus;
/* 复位系统时钟设置*/
RCC_DeInit();
/* 开启HSE*/
RCC_HSEConfig(RCC_HSE_ON);
/* 等待HSE起振并稳定*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/* 判断HSE起是否振成功,是则进入if()内部*/
if(HSEStartUpStatus == SUCCESS)
{
/* 选择HCLK(AHB)时钟源为SYSCLK 1分频*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 选择PCLK2时钟源为HCLK(AHB)1分频*/
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 选择PCLK1时钟源为HCLK(AHB)2分频*/
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 设置FLASH延时周期数为2 */
FLASH_SetLatency(FLASH_Latency_2);
/* 使能FLASH预取缓存*/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为8MHz * 9 = 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL输出稳定*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 选择SYSCLK时钟源为PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待PLL成为SYSCLK时钟源*/
while(RCC_GetSYSCLKSource() != 0x08);
}
/* 打开APB2总线上的GPIOA时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
}
二.I/O口的配置与使用
1. 配置函数调用/* 设置GPIO端口*/GPIO_Configuration();
void GPIO_Configuration(void)
{
/* 定义GPIO初始化结构体 GPIO_InitStructure */
GPIO_InitTypeDef GPIO_InitStructure;
/* 设置 GPIOA.4 为推挽输出,最大翻转频率为50MHz*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
/* 若要对几个IO口则为GPIO_Pin_4|GPIO_Pin_5*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
设置GPIO端口电平的高低:
GPIO_WriteBit(GPIOx,GPIO_Pin_x,(BitAction) (1/0))
GPIO_WriteBit(GPIOA,
GPIO_Pin_4,
(BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4))
);//翻转GPIOA.4电平。