STM32学习笔记小结.doc_第1页
STM32学习笔记小结.doc_第2页
STM32学习笔记小结.doc_第3页
STM32学习笔记小结.doc_第4页
STM32学习笔记小结.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32学习笔记STM32学习笔记目录STM32学习笔记1一、入门2目标-实战项目2STM32学习方法3ARM简介4二、外设功能模块5GPIO原理与工作模式5串行通信6硬件下载与调试6Cortex-M3复用功能(AF)和重映射功能6Systick的使用7通用定时器7SPI与数码管7I2C通信8NVIC中断8PWM基础9RCC内部结构与原理9ADC模数转换10内部温度传感器10窗口看门狗10USB应用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:高性能应用处理器。(越来越接近电脑)Cortex-R:专门针对实时、深度嵌入式的解决方案。(又快又实时)Cortex-M:专注低成本嵌入式微控制器。(好用又便宜)Cortex-M中低端的芯片Cortex-M0:针对FPGA应用 Cortex-M1:替代低成本MCU Cortex-M3:占领高性能MCU市场Cortex-M3特点:高性能(哈佛结构+分支预测)、高集成度(单芯片)、高代码密度(Thumb2指令集)、内嵌NVIC中断(响应速度快)、低成本(最便宜的不到1美元)。Cortex-M3处理器产品:STM32系列(瑞士 意法半导体ST)、Stellaris 系列(美TI)、LPC1000系列(荷兰NXP)、AT91SAM3系列(美Atmel)STM32103VCT6引脚:80*GPIO或(外设)引脚复用 20*(电源相关、复位、晶振)ATmega128是Atmel公司的8位系列单片机的最高配置的一款单片机。ARM流水线 指令处理:二、外设功能模块STM32库函数库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。灵活使用、驾轻就熟。GPIO原理与工作模式1. 设置GPIO引脚的工作模式2. 引脚位运算: 寄存器BSRR/BRR 位绑定:位n 映射到 内存地址a if a=0x01 低地址为1 则n =1 运算高效(替代读-修改-写)可绑定区域 SRAM 0x2000 0000 0x200f ffff 1M空间位绑定公式: AliasAddr = 0x2200 0000 +(A-0x2000 0000)*8 +n)*4 n=(0 31) =0x2200 0000 +(A 0x2000 0000)*32 + 4*n 片上外设 0x4000 0000 0x400f ffff 1M位绑定公式: AliasAddr = 0x4200 0000 +(A-0x4000 0000)*8 +n)*4 =0x4200 0000 +(A 0x4000 0000)*32 + 4*n 位绑定操作:位绑定公式:位绑定编程:#define BitBand(Addr,BitNum) *(volatile unsigned long *)(Addr&0xF0000000)+0x2000000+(Addr&0xfffff)5)+(BitNum12Printf(“%x” , ID_numi);Cortex-M3复用功能(AF)和重映射功能复用功能配置(AFIO_MAPR 复用重映射和调试I/O配置寄存器)GPIO_PinRemapConfig(选择重映射的管脚 , 重映射的新状态)重映射优点:1、改善硬件设计 2、额外增加资源UART-Printf重新定向Int fputc(int ch , FILE *f)/ch送到串口USART_SendData(USART1 , ch);/等待发送完毕While(USART_GetFlagStatus( USART1 , USART_FLAG_TC) = RESET );/返回chReturn(ch);Systick的使用1、 延时 2、心跳 传统的延时(空等待)for( i=0; im; i+) ;浪费CPU资源、M值不精确。STM32执行一条指令只需几十ns。Systick最高为HCLK/8。内部是24位递减计数器即16M计数,Systick最高频率9M,即最慢产生16M/9M = 约1.8s中断。SysTick_CounterCmd( )使能SysTick计数器。 SysTick_ITConfig( ) 使能SysTick中断。SysTick_CLKSourceConfig( )时钟源设置。 SysTick_SetReload( ) 设置重装载值。通用定时器1、 TIM1和TIM8是能产生3对PWM互补输出的高级定时器,常用于电机的驱动,时钟由APB2产生。2、 其他6个为普通定时器,时钟由APB1产生。Timer作用:1、定时功能 2、计数功能 3、输入捕获 4、匹配输出 5、PWM脉冲波原理5部分:1、时钟源 2、时基部分 3、输入 4、输出 5、寄存器部分定时器配置1、开启时钟RCC_APB1PeriphClockCmd( )。2、利用TIM_DeInit( )函数将Timer设置成默认缺省值。3、TIM_InternalClockConfig( )选择TIMx来设置内部时钟源。4、TIM_Prescaler()设置预分频系数。5、TIM_ClockDivision()来设置时钟分割。6、TIM_CounterMode()来设置计数器模式。7、TIM_Period() 来设置自动装入的值。8、TIM_ARPPreloadConfig() 来设置是否使用预装载缓冲器。9、TIM_ITConfig() 来开启TIMx的中断。SPI与数码管74HC595芯片:串转并当SCLR为低电平时,输出端Q清零。当SCLR为1,SCK出现上升沿时,内部寄存器移位并接受SER端发出来的数据。当RCK出现上升沿时,74HC595内部寄存器的数据输出到QAQH端。SPI串行接口SPI是Motorola公司提出的一种同步串行外围接口。在低速、低功耗、需保存少量参数的智能化传感系统中得到了广泛应用。主要信号:1、MOSI 2、MISO 3、SCK串行时钟 4、SS从机选择信号,低电平有效。SPI主模式通信设置步骤:1、 通过SPI_CR1寄存器的BR2:0位定义串行时钟波特率。2、 选择CPOL和CPHA位,定义数据传输和串行时钟的相位关系。3、 设置DFF位来定义8位或16位数据帧格式。4、 配置SPI_CR1寄存器的的LSBFIRST位定义帧格式。5、 如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间应把NSS引脚连接到高电平;在软件模式中,需设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作在输出模式,则只需设置SSOE位。6、 必须设置MSTR和SPE位(只当NSS连接到高电平,这些位才能保持置位)。在这个配置中,MOSI引脚是数据输出,MISO引脚是数据输入。 I2C通信I2C bus是Philips公司推出的一种基于两线的芯片间串行传输总线。采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件具有了最简单而灵活的拓展方法。特点:1、二线传输 2、无中心主机 3、软件寻址 4、应答式数据传输过程 5、节点可带电接入或撤出*在I2C总线上只需串行数据SDA线和串行时钟SCL线两条线。I2C配置1、 开启端口、模块(IIC)时钟2、 相应引脚初始化(开漏输出)/*重映射配置3、 I2C配置 I2C_Init()4、 发送过程1) 发送起始信号,while等待起始信号发送事件并清除。2) 发送器件地址,while等待发送结束3) 发送器件内部写入地址,while等待移位寄存器空4) 发送数据,while等待发送缓冲区空5) 发送停止信号EEPROM使用CAT24WC16芯片是CATALYST(美凯特里斯)公司(已被安森美半导体ONSEMI)收购,生产的串行电可檫除的可编程存储器。NVIC中断CM3中断优先级:抢占式优先级(主)和响应优先级(从)。STM32中断编程的规定动作:1、 时钟配置2、 GPIO配置3、 EXTI配置(中断源选择、清除中断标志、触发模式等)4、 NVIC配置()5、 中断服务子程序PWM基础1、PWM即Pulse Width Modulation,脉冲宽度调制。是一种对模拟信号电平进行数字编码的方法。等效的实现是基于采样定理中一个重要的结论:冲量相等而形状不同的窄脉宽加在具有惯性的环节上时,其效果基本相同。冲量即窄脉冲的面积,效果相同指的是该环节输出响应波形基本相同。2、STM32除了TIM6和7都可以产生PWM,其中高级定时器TIM1和8可同时产生多达7路的PWM输出。其他通用定时器也可产生多达4路PWM输出。RCC内部结构与原理时钟是STM32的脉搏,是驱动源。外设的使用,打开和关闭对应的时钟,节能降低功耗。设置时钟流程:1、 RCC_DeInit()默认值2、 打开外部高速时钟晶振HSE。RCC_HSEConfig( )3、 等待HSE工作。 RCC_WaitForHSEStartUp()4、 设置AHB时钟。RCC_HCLKConfig( )5、 设置高速APB时钟。RCC_PCLK2Config( )6、 设置低速APB时钟。RCC_PCLK1Config( )7、 设置PLL 。RCC_PLLConfig( )8、 打开PLL。 RCC_PLLCmd(ENABLE )9、 等待PLL工作。 While( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET )10、 设置系统时钟。RCC_SYSCLKConfig()11、 判断是否PLL是系统时钟。While(Get_SYSCLKSource() != 0x08)12、 打开要使用的外设时钟。RCC_APB2PeriphClockCmd( )/ RCC_APB1PeriphClockCmd( )RTC结构和特点1. RTC结构包含两个部分。1) APB1接口部分(控制寄存器)2) 有可编程计数器组成,分两个模块。预分频模块和32位计数器模块,前者产生秒信号和秒中断,后者产生闹钟中断。2. RTC特点1) 可编程的预分频系数:最大分频系数为220。2) 32为可编程计数器,用于较长时间段的测量。3) 2个单独时钟,用于APB1接口的PCLK时钟和RTC时钟。(RTC时钟小于PCLK四分之一以上)4) 两种独立的复位类型:APB1接口由系统复位,RTC只能由后备域复位。5) 3个专门的可屏蔽中断:闹钟中断,秒中断,溢出中断。RTC配置过程:1. 查询RTOFF位,直到该位置“1”。2. 置CNF位为“1”,进入配置模式。3. 对一个或多个RTC寄存器进行写操作。4. 清除CNF位,退出配置模式。5. 查询RTOFF位,直到RTOFF位变为“1”以确认写操作完成。(仅当CNF标志位被清除时,写模式才能进行,这个过程至少需要3个RTCLK周期)RTC使用1 打开APB1总线上的PWR、BKP时钟。2 使能RTC和后备寄存器访问。3 复位备份寄存器设置4 打开RTC时钟(外部或系统)5 打开RTC寄存器同步(APB1)6 RTC使能秒中断,闹钟中断,分频值32767k。(RTC_WaitForLastTask( ) )7 设置当前时钟值。ADC模数转换STM32拥有13个ADC,可以单独使用,也可以使用双重模式(提高采样率)。STM32的ADC是12位的逐次逼近型的模数转换器。有18个通道,可以测量16个外部2个内部信号源,各通道A/D转换可以单次、连续、扫描或间断模式执行。模拟看门狗允许应用程序检测输入的电压是否超出用户定义的阈值。最大转换速率1Mhz,转换时间为1us(在ADCCLK=14Mhz,采样周期为1.5个ADC时钟下得到)若ADC的时钟超过14Mhz,则采样准确率下降。内部温度传感器1、与ADCx_IN16相连。2、-40125度测量范围,精度为1.5度。采样时间大于2.2us。3、配置ADC_CR2寄存器TSVREFE位,唤醒关电模式下的温度传感器。4、设置ADCON位启动ADC(或外部触发)。5、读ADC数据寄存器的V SENSE结果。6、利用公式算出温度:T = (V25 Vsence)/Avg_Slope + 25)窗口看门狗Twwdg = Tpclk1 * 4096 * 2 (WDGTB)*( T5:0 + 1) ; ms在0x40设置窗口值之间喂狗,否则过早或过晚都会引起复位。用于时间要求严格的特殊应用。低功耗模式与唤醒三种低功耗模式:1)睡眠模式 2)停止模式 3)待机模式 4)*正常运行下降低功耗在产品是电池供电时,适合配置低功耗模式。并根据最低电源消耗,最快启动时间和可用唤醒源来选择最佳的低功耗模式。USB应用Universal Serial Bus通用串行总线,包括USB1.0/1.1,USB2.0,USB OTG。USB1.1协议:1、 信号层:NRZI反向不归零编码方式2、 协议层:数据包6部分同步字段、包标示符、地址字段、数据字段、检验字段、包结束。3、 数据传输层4种方式:控制传输,同步传输,中断传输,大容量数据传输。USB设备协议当一个USB设备插入后的活动:供电复位获取设备描述符复位(可选)分配地址获取设备描述符获取配置描述符获取字符描述符(可选)配置STM32实现USB设备的操作:1、 根据应用选择合适的USB类实现。2、 根据所选择的USB类协议,完成各个描述符。3、 根据描述符初始化端点数目,分配各端点所需使用的Packet Buffer。4、 初始化所使用的端点,配置端点的传输类型、方向、Packet Buffer地址和初始状态。5、 在需要接收或发送数据的时候,使能端点。6、 在该端点的中断回调函数中,处理数据,如果需要则使能下一次传输。STM32的USB库函数:Stm32f10x_it.c :包含USB中断服务程序,由于USB中断有很多情况,这里的中断服务程序只是调用usb_Istr.c文件中的USB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论