




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
YS-F1Pro开发板开发手册(HAL库 系列技术: 话(硬石电 STM32Cube是一个全面的软件平台,包括ST产品的每个系列,(STM32Cube_F1是针对STM32F1系列STM32Cube硬件抽象层(HAL)和一套中间组件(RTOS,USB,FS,TCP等等。STM32Cube是由ST公司倡议,旨在减少开发负担、时间和费用,为开(HAL外设的接口函数(USB以太网等复杂外设),代码结构强壮,已通过CodeSonar认证。同时,HAL还集成了广泛的例程,可以运行在不同意法半导体YS-F1Pro开发板是硬石团队研发的针对STM32F103的综合性实验测试平台,开发板几乎囊括了所有的外设,这对新手是非常好的学台,开发板几乎所有采购来着嘉立创平台,质量有保证,这与还是有很最终掌握STM32的基本编程方法,学会将STM32CubeMX应用到自己DIY应用YS-F1ProSTM32的知识也就那如果有原作者认为我们不能您的著作内容,请务必们,我们会把本文档参考大量文档而编写完成,部分内容可能直接网络文档,所以在们会虚心求教,我们会根据情况本店模块以表示我们的诚意。F1Pro 硬石YS-F1Pro开发板HAL库例程持续更新 (一 硬件设 第1 YS-F1Pro开发板硬件设 YS-F1Pro开发板硬件资 YS-F1Pro开发板跳帽配置说 YS-F1Pro开发板IO分 第2 YS-F1Pro开发板原理图详 微控制 FSMC—扩展SRAM和TFT液 扩展 LCD液 电源管 STM32F103供 开发板供 SWD和ISP接 SWD接 ISP方 数据设 串行 串行 SD USB从设备(USB CAN通 红外接收2.4G无线模 W5500以太网模 电机模 步进电 舵 直流电 AD转 其他功能电 LED灯电 独立按 电容式按 蜂鸣 温湿度传感器接 头接 所有 第3 3.5寸液晶模组电路设 液晶显 电阻触摸实 (二 软件设 第4 HAL库介 STM32软件编 HAL库是什 HAL库发展趋 HAL库特 第5 开发软件安装及使 Keil安 Keil软件获 Keil软件安 Keil软件IAR安 IAR软件获 IAR软件安 IAR软件的STM32CubeMX软 使用CubeMX新建工 第6 KEILv5和IAR软件使 KEILv5软件使 IAR软件使 第7 程序编译和Keil软件方 ST-Link驱动安 工程位 配 环 编 ISP方 安装USB转串口驱 硬件连 设置工具选 成功画 第8 另类HAL库版本工程创 STM32CubeF1固件 建立工 调 第9 寄存 寄存器定 微控制 内部总 器映 位带操 外 时钟和复 复 时钟 第10章Cortex-M3内 CM3内核简化模 寄存 寄存器应用分 第11章GPIO—流水 GPIO介 GPIO相 LED灯硬件设 GPIO外设结构 GPIO编程流程分 流水灯代码实 蜂鸣器控 蜂鸣器驱动电路设 蜂鸣器控制代码实 第12章工程文件结构和复位启 例程文件结 启动代 复位启动流 第13章GPIO—按键输入扫 按键输入硬件设 按键扫描编程流程分 按键输入扫描代码实 第14章EXTI—按键中断输 NVIC寄存 中断优先级分 优先级分 NVIC相关函 中断配置实 EXTI功能框图分 按键中断编程流程分 按键中码实 第15章USART—RS-232串口通 串口通信协 物理 协议层 STM32的USART简 串口通信硬件设 使用CubeMX软件生成USART工 USART结构 编程要 USART代码实 第16章USART-指令控 USART的调试应 使用CubeMX生成工 编程要 USART串口指令代码实 第17章DMA—直接内存 DMA功能框 DMA硬件设 DMA外设结构 DMA编程流程分 内存数据拷贝代码实 第18章DMA-USART1接 DMA器到外设模 使用CubeMX软件生成工 编程流程分 DMA器到外设代码实 第19章SysTick—系统滴答定时 SysTick介 相关寄存器介 系统滴答定时器硬件设 SysTick编程流程分 SysTick实现定时代码实 第20章TIM-基本定时 基本定时器简 基本定时器功能框 TIM6&TIM7编程流程分 TIM6&TIM7基本定时代码实 第21章TIM-高级控制定时 高级控制定时 输入捕获模 输入模 强置输出模 输出比较模 模 互补输出和死区插 在外部时清除OCxREF信 产生六 输 单脉冲模 编接口模 与霍尔传感器的接 TIMx定时器和外部触发的同 高级控制定时器外设结构 高级控制定时器生 编程流程分 高级控制定时器生 代码实 第22章TIM-通用定时器(电容按键 电容按键原 电容按键硬件设 STM32Cube生成工 触摸按键外设结构 触摸按键编程流程分 触摸按键代码实 第23章TIM-通用定时器(呼吸灯 呼吸灯功能实 使用CubeMX软件生成代 呼吸灯编程流程分 呼吸灯代码实 第24章ADC-电压STM32ADC介 DMA传输在ADC中的应 ADC硬件电路设 ADC外设机构体分 ADC编程流程分 基于DMA传输的多通道AD转换代码实 双ADC慢速交叉模式代码实 第25章DAC-电压输 DAC简 DAC硬件电路设 使用CubeMX生成DAC正弦波工 DAC外设结构体分 正弦波输出代码实 可调电压输出代码实 第26章LCD-液晶显 LCD简 LCD控制器简 FSMC简 LCD硬件设 使用CubeMX生成工 FSMC外设结构 LCD编程流程分 LCD显示代码实 第27章LCD显示中英文(字模在内部 ASCII编 字 制作字 使用CubeMX生成工 LCD显示字符及汉字编程流程分 LCD显示字符代码实 LCD显示汉字代码实 第28章FSMC-外部SRAM实 SRAM简 SRAM硬件电路设 使用CubeMX生成工 FSMC-外部SRAM外设结构 FSMC-外部SRAM编程流程分 FSMC-外部SRAM代码实 FSMC-扩展SRAM内存管理代码实 第29章SDIO-SD SDIO简 SD卡物理结 SDIO功能框 SDIO总 总线拓 总线协 命 响 SDIO-SD卡硬件电路设 使用CubeMX生成工 SDIO外设结构体分 SDIO编程流程分 SDIO-SD卡读写代码实 第30章SDIO-基于SD卡的FatFS文件系 文件系 FatFS简 使用CubeMX生成工 第31章SPI-串行 SPI简 SPI物理 SPI协议 SPI框架剖 SPI通讯过 SPI-串行Flash硬件设 使用CubeMX软件生成工 SPI-串行Flash结构 SPI-串行Flash编程流程分 SPI-串行Flash代码实 第32章SPI-基于串行Flash的FatFS文件系 使用CubeMX生成工 SPI-基于串行Flash的FatFS文件系统编程流程分 SPI-基于串行Flash的FatFS文件系统代码实 第33章I2C- I2C简 I2C物理 协议 STM32的I2C特性及架 I2C-EEPROM硬件设 使用CubeMX生成工 I2C-EEPROM编程流程分 I2C-EEPROM代码实现(硬件 I2C-EEPROM代码实现(软件模拟 第34章LCD-显示汉字(字库在SD卡 中文编 字模的生 LCD-显示函数(字库在SD卡)编程流程分 LCD-显示函数(字库在SD卡)代码实 第35章LCD-显示汉字(字库在串行 烧写中文字库到串行 烧写中文字库到串行Flash代码实 第36章LCD-显示(在SD卡 36.1格式简 BMP头文件格 生成BMP图 LCD-显示(在SD卡)结构 LCD-显示(在SD卡)编程流程分 LCD-显示(在SD卡)代码实 第37章LCD-触摸画 触摸屏简 电阻触摸屏检测原 触摸屏硬件电路设 使用CubeMX生成工 第38章CAN-双机通信测 CAN简 CAN物理 CAN协议 STM32的CAN外设简 CAN总体描 CAN通讯硬件电路设 使用CubeMX生成工 第39章RS-485通 RS-485通信简 RS-485通信硬件电路分 RS-485通讯编程流程分 RS-485通讯代码实 第40章以太网- 以太网简 以太网模 以太网分层概 以太网接入方 W5500的Socket初始 W5500相关例程功能简 以太网W5500硬件设 使用CubeMX生成工 以太网-W5500结构 TCP-Server编程流程分 TCP-Server代码实 第41章WIFI- ESP-8266简 主要参 功能描 接口说 ESP-8266硬件电路设 端设 使用CubeMX生成工 ESP8266结构 ESP-8266控制开发板编程流程分 ESP-8266控制开发板代码实 第42章串口 IAP简 Keil软件设 更新 IAP结构体分 IAP编程流程分 第43章STemWin图像界面软件 第44章uC/OS-Ⅲ移植-HAL库版 (一) YS-F1Pro开发板硬件设YS-F1Pro开发板YS-F1Pro1-11-2图1-1YS-F1ProYS-F1ProSTM32F103ZET6这个控制器的内STM32F103的内部资源,都可以在此开发板上图1-2YS-F1ProYS- 开发板跳帽为尽可能发挥STM32F103ZET6这颗微控制器的性能、提供的接口,开发板设计使用了跳帽选择实现不同的功能,具体情况参考图1-3和表格1-1:图1-3表格1-1 1CH340GUSART1CH340G2PB0PG6ULN2003PG6ULN2003PD3与头接口有共345左边:RS-485右边:RS-2326W5500VS1053、2.4G无线需要W55007YS-F1ProIOYS-F1ProSTM32F103ZET61-表格1-2YS-F1Pro开发板IO选连接蓝牙HC-05、GPS、GSM模块选连接蓝牙HC-05、GPS、GSM模块PB2-78PC14-9PC15-OutputEnable)Write12345图1-4YS-F1Pro第2章YS-F1Pro微控制STM32F103ZETT6拥有的资源包括:64KBSRAM、512KBFLASH、2时器、4个通用定时器、2个高级定时器、2DMA控制器(12个通道、3SPI2IIC5个串1USB1CAN312ADC112DAC、1SDIO接口、1FSMC接口以及112IO口。(GPIO2-1,还有一部分是电源引脚(属于电源模块部分2-图2-1STM32F103ZET6别对于把SWD接口功能引脚做为模块功能引脚时特别注意需要关闭的JTAG和SWD功能。STM32F103有多种启动模式可以选择。启动模式理解是:微控制器允许从理解,比如,大厅对应区0,存放了一个房号,这个房号就是由BOOT0和BOOT1引脚决定的;房间1对应内Flash2RAM,房间3对应系统开发板默认通过两个10K欧的电阻把BOOT0和BOOT1引脚都拉低Flash2-2图2-2这里需要需要注意的一点,BOOT0BOOT1引脚是有可能被拉高为高电平的,因为这里有10K欧电阻的存在,后面在模块电路会用到BOOT0引脚。我们需要为STM32F103提供一个时钟源,一般使用8MHz的无源石英晶振,见。实际上,STM32F103内部有一个主时钟源,也为8MHz,但一般我们不年历)还需要提供32.768KHz的时钟源。电路设计见图2-3。图2-32-图2-4STM32F103ZET6NRESET为低电平时,CPU处R6C5RC复位电路。当系统上电时,C50,CPU处于复位状态VDD(3.3V)电源通R6C5充电C5的电压升CPU的高电平门槛电压时,CPU退出复位状态转入运行状态。在设计电路时,需要选择适当的R值和C值,以保证NRESET低电平持续时间满足CPU复位最小脉宽的要求。(FSMCFlashcontroller所有的外部器共享控制器输出的地址、数据和控制信号,每个外部设备SRAMStaticRAM的缩写,它是一种具有静止存取功能的内存,不需这是和Flash最大的区别。YS-F1Pro开发板板载1片1MX16的静态器(1M问模式。电路设计见图2-5。图2-5扩展2-表格2-1SRAM高字节控制(I/O8~低字节控制(I/O0~A0~I/O0~LCD液STM32F103ZET6没有内置LCD控制器,因此需要选用带控制器的XPT2046TSC2046STM32F103ZET6SPISPI接口资源紧张我们使用普通的IO接口模拟SPI通信时序时序与TSC2046正常通信,实际测试触摸效果并没有因为使用模拟SPI时序而影响。TSC2046具有中断输出口线,当触摸屏被按压时PENIRQ口线输出低电平。2-6图2-6TFT2-表格2-2STM3212触摸从机输34触摸从机输56触摸时钟7~LCD_DB0~电源管STM32F103供则是通过一个电感后与3.3V连接,参考图2-7。图2-7STM32F103ZET6开发板供开发板不同模块可能需要的电源电压有+5V和+3.3V两种。5V电源可以有两MINIUSBUSB线5V电压,这种方法非常方便,通常都是使用这种方法的,该最大可输出3A电流,驱动力十足,一般只有在开发板接上很多模块才要这种供电方法。3.3V电源则是利用AMS1117-3.3从5V电源转换得到。电路设计见图2-8。其中,D6SMAJ5.0A5V外图2-85V3.3VSWD和ISP接SWD接JTAGARM20SWD接口只6个引脚。YS-F1Pro开发板仅支持SWD调试接口JTAG接口,这样JTAG其余的功能引脚可以用作普通的GPIO使用。SWD接口调试接口和原理图见图2-9图2-9SWDRESET#是STM32的硬件复位引脚。仿真器(比如J-Link和ST-Link仿真于大多数,我们还是建议在调试口中增加RESET引脚。电的。对于J-Link仿真器,是必须的,因为J-Link仿真器内部的电平转换芯ST-Link仿真器,这个电源引脚可以不接,因缺省就是3.3V的。JTMS/SWDIO(PA13)、JTCK/SWCLK(PA14SWD调试接口的数图设计了一个ST-LinkV2仿真器,实物图和开发板连接图见图2-10。图2-10ST-Linkv2JTAG转成与我们开发板匹配的准,即功能引脚排序可以自行设计。实物连接见图2-11。图2-11ST-Linkv2JTAGSWD转换板就可以了,仅支持SWD模式。另外我们还提供了把我们的ST-Linkv2仿真器转换成标准的JTAG接口的转换方案,不过仅支持SWD模式,实物连接参考图2-12,注意这里使用的红图2-12硬石STLinkv2转JTAG接ISP方STM32F103支持ISP(InSystemProgram)程序,电路设计见图2-13,ISP电路使用到CH340G,它是一个USB转串口IC,这里使用STM32的当STM32F103被设置为从系统代码启动后,通过通信设定后,可以接收USART1数据更新内部Flash内容,这样达到程序目的,当再次从内部Flash启动时就0)STM32F1032-13中下方把BOOT0拉高,这样STM32F103就可以进入ISP模式,注意这里是可以进定启动模式,所以现在需要让STM32F103进行一次复位,这时就要看DTR#引脚的功能了。当DRT#为高电平时Q1三极管导通,原本RTS#引脚就为低电平,Q1导通后U4的第2引脚(标识为“Z”)也是低电平,而U4是74HC1G66GW,实际上低电平,此时STM32F103进入复位状态。74HC1G66GW在这里起到系统上电后延时RTS#引脚信号对RESET#引脚的好了,在成功复位之后就可以需要把DTR#引脚拉高,此时RESET#引脚也被拉高,现在ISP软件就可以对STM32F103程序。等程序完之后,RTS#BOOT0引脚为低电平,这样等一切就绪之后,在复位一下STM32F103就可以从Flash启动,并运行新程序。图2-13ISP接数据设开发板提供多种数据方式,有串行Flash、EEPROM、SD卡USB串行128Mbit(16M字节)Flash,型号为W25Q128FVSIG,它挂载在STM32F103SPI1接口上,电路设计见图2-14。图2-14串行2-表格2-3FlashSTM32片选(ChipSelect)CS由高变低时,被能。在命令传输器件,CE串行数据输出(SerialData写保护使能(Write3.3V电源,缺省是串行数据输入(SerialData数据输出到Flash时停止SPI通信通过上拉电阻接电源,SPI串行EEPROMSTM32I2CI2C2线I2CI2C主设备(STM32F103控制器,可以允许并接很多I2C从设备,这些设备必须具备唯一的地址以便于区分。1-10KI2C256个字节,对于我们普通应用来说是足够了的。当然,你也可以选择换大容量的,因为我们的电路在原理上是兼容AT24C02~24C512全系列EEPROM芯片的。电路参考图2-15。图2-15AT24C02程序的时候要注意这点。I2C_SCLSTM32F103PB6上,I2C_SDAPB7I2CI2C通信方SDSTM32F103ZET6SDIOSD卡操作,YS-F1Pro开发板设电路设计参考图2-16。图2-16SDSD4SDIO12MB/S,非常适USB从设备(USBSTM32F1031USBUSBDevice设备。USBDevice接USBUSBUSBHost。使用这个接口,我们可以做U盘实验(将开发板SD卡和串Flash虚拟2U盘可以通过电脑读写文件。另外,也可以利用该USB接口实现模拟串口效果。2-17USBD_ENBLE(PG13)Q3三极管导通是,USBDevice接口才有效。图2-17USB数据传输—通信实STM32F103集成多个通口,包括5个UART、CAN通信等等,YS-F1Pro开发板充STM32F103性能,集成了多种形式的通信方法RS-232串口通信等等,并扩展了GSM()模块和GPS模块。USART2—WiFi、GSM、GPS、蓝GSM模块,NEO-7MGPSHC-05蓝牙模块,使用我们配套的杜体可阅读1.2小节。图2-18USART2YS-F1ProESP-12FWiFi模块。ESP-12FWiFi模块TensilicaL10632位微型MCU16位精简模式,主频支该模块支持标准的IEEE802.11b/g/n协议,完整的TCP/IP协议栈。用户可以USART3—RS-232、RS-RS-232RS-485在设备应用中非常普遍,开发板提供1RS-232(DB9连接器)1RS-485接口,见图2-19。图2-19USART3这里选择SP3232E,实现标准RS-232电平转换为STM32支持的TTL电平。RS-485接口情况类似,采用差分信号负逻辑,逻辑"0”PB2PB2RS-485发则是两个偏置电阻,以保证静默状态时,RS-485总线维持逻辑1。RS-485是在RS-2321200MCAN通YS-F1ProSN65HVD230作为CAN驱动器。CAN5.08mm间距的接线端子引出,参考图2-20。图2-20CANCAN120CAN总线的一个中间节点使用,那么可能需要去掉这个120欧阻抗匹配电阻。CAN总线的数8脚的电1.2V时,收发器处于允许发送(也可以接收。R36电阻的阻值可以控制波形的斜率。阻值越小,波形的上升沿和下大波特率也是1Mbps。SN65HVD230的第4脚是接收到的信号输出,为推挽输出模式,因此和STM32相连时,无需外加上拉电阻。红外接外接收管,电路设计见图2-21。图2-21该信号连接在PB1上。2.4G无线模无线通信在很多场合非常有用,YS-F1ProRFID2-22图2-222.4GNRF24L012Mbps,传输距离最大可以到15米左右(空旷地,无干扰SPI3PB3是SWDSDO功能引脚,所以使用SPI3时必须禁用SWD接口功能。W5500W5500以太网模块包含了一个硬件TCP/IP协议栈W5500以及一个含RJ-4(HR911105A。其中,W5500TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案.使用硬件逻TCP/IP协议栈的传输层及网络层(如:TCP,UDP,ICMP,IPv4,ARP,IGMPPPPoE等协议32KRAM作为数据收发缓存。使得上位机主控,只需承担TCP/IP应用层控制信息的YS-F1Pro开发板集成了一个整个W5500图2-23W5500图2-23中上半部分是W5500及其电路,W5500需要外接一个25MHz的晶振。W5500SPISTM32F103SPI3接口,W5500PF11,W5500中断输出引脚同样通过一个跳线帽连接至PF9W5500的复位硬件与STM32F103的复位引脚直接在一起。VS10532-24,VS1053可以使用SPI通信进行通信,这里预留设计SPI3接口做为VS1053的通口,同时IO供使用,实际上预留的这个接口也是可以给其他模块使用图2-24VS1053这里要特PB3SWD接口SDO功能引脚以使SPI3时必须禁用SWD接口功能。电机模步进电系统。ULN2003A7组达林顿晶体管阵列和相应的电阻网络以及钳位二极络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。ULN2003一般用于小型步进电机驱动。YS-F1Pro开发板集成了一个ULN2003A和对应的接口,电路设计参考图2-2528BYJ-4842、57类型步进电机是使用控制,类似直流电机的控制方法。图2-25图2-26舵作原理是由发出讯号给舵机,经由电路板上的IC判断转动方向,再驱动子,并将磁铁置於圆柱体内,这就是无马达。舵机解剖图参考图2-27。图2-27图2-28里还需要注意,PA15JTAG接口引脚,在编程时注意禁JTAG接口功能,PA15直流电STM32STM32IO接口驱动能力动器从而来实现电机的旋转控制。STM32一般是通过产生信号控制电机驱动器,所以需要用到STM32定时器功能。STM32F103ZET6有两个高级控制定时器TIM1和TIM8,非常适合复杂的电机控制场合,YS-F1Pro开发板设计时将图2-29。图2-29ADAD转换顾名思义就是模拟量转换成数字量,实际应用中很多信号都是模拟STM32F103内部集成了一个12位ADC是一种逐次近型模拟数字数字3.3V2^12=4096等分,在特定的输入引脚上的某一电YS-F1Pro6AD转换引脚,其中两个引脚可以直接通过跳线帽短接至光敏电阻和精密电位器,电路设计参考图2-30。图2-30AD6ADADC1、ADC2ADC3其他功能电LED灯电YS-F1Pro3LED2-31图2-31LEDLED1GND(0V)PB0引脚上(中间还JP3默认使用跳线帽短路PB0引脚为高电平(3.3V)的话,此时电路存在电压差,电流从LED1灯正极流向负极再经电阻流入GND,此时LED1PB0引脚的高或者低电平就可以自由控制LED1灯的亮灭。LED2LED3控制原理与LED1是相同的。独立按以做为系统唤醒和TAMPER(侵入)功能,电路设计见图2-32。图2-32KEY1按键通过R43电阻接在PA0R44电平。KEY1按键可以做为系统唤醒功能。KEY2PC13R45作用后PC13慢慢上升自3.3V。KEY2按键可用于系统侵入功能。电容式按电容式触摸感应按键的基本原理如图2-33所示,当(手指)接触金属形成一个电容,感应电容量通常有几pF到几十pF。利用这个最基本的原理,在外图2-33图2-34蜂鸣YS-F1Pro2-35STM32I/O口是无法直接驱图2-35别是GPIO连接此基极的时候,一般在GPIO所在IC刚刚上电初始化的时GPIO的内部也处于一种上电状态,很不稳定,容易产生噪声,引起误动(的电流由电阻流入地)当三极管开关作用时,ONOFF时间越短越好,OFF时,因晶体管中的残留电荷引起的时间滞后,B,ER起到放电温湿度传感器接YS-F1ProDS18B20、DHT11、AM2302等型号温度传感器和温湿度传感器,电路设计参考图2-36。图2-36头接块,电路设计见图2-37。图2-37头接 I2C1_SCLSCCB接口的控制时钟(I2C接口类似I2C1_SDASCCB接口的串行数据输入(出)端(I2C接口类似 FIFO_WENFIFO写使能(1为允许CMOS写入到FIFO,0为);FIFO_RCLKFIFO内存时钟控制端;FIFO_WRST—FIFO写指针服务端;FIFO_OEFIFO关断控制;FIFO_RRST—FIFO读指针复位端。所有板把所有的GPIO通过排针引出,参考图2-38。图2-38GPIO 3.5寸液晶模组电路设为配合YS-F1Pro开发板做人机交互界面,我们专门设计了一个3.5寸液晶显示模组,该液晶模组是320*480的真彩屏,驱动为ILI9488。该屏使用16bit总线模式,采用6个白色LED作为背光源。液晶显3-18bit16bit数据并口,我们默认16bit接口,这样才可以充分发stm32的优势。背光采用图3-1电阻触参考图3-2。图3-2(二) HAL库介相信会来阅读本文的同学都大概知道STM32微控制器是什么东西,本文讨论的是STM32F103ZET6,实际上合适STM32F1系列。微控制器最简单如PA0,输出高电平,要怎么办呢?编写程序,然后编译程序并到开发板运使用Keil或者IAR。ST为广大使用者方便编程已经提供了与硬件底层相关的C语言文件,节省了我们很多时间,我们重点是学习如何使用。STM32C语言编程可以是直接寄存器编程、标准固件库编程以及新推出的HAL库编程。直接寄存器编程是直接操作寄存器方法,比如语句:PB1引脚,0x0003对应PB0PB1GPIOBBSRR是什么东西,如果要展开讲有太多了,简单讲就是ST已经为我们定义好的东GPIOBBSRRSTM32编程的一个软件函数库,就是目前还流行的标准固件库。使用如下语句,就可以控制PB0引脚输出高电平:10年以来受广大使用者推崇,就是现在还有大部分工程师、公司都在使用。不过,现实情况有点,ST已经不再更新STM32标准固件库,STM32F12013年后没有正式发布更新版本,所以现在都停留在V3.5.0版本。现在ST全力推新的软件编程库:HAL库,现在使用HAL库实现PB0输出高电平编程如下:用谁知道,总体来说HAL库还是比较人性化的,并且配合STM32CubeMX软件使用可以简化编程。关于HAL库详细介绍请继续看。HAL在解释HAL库之前,我们先认识STM32CubeMX(简称CubeMX,下同。它是ST推出的一种STM32设置和初始化C代码的,界面见图4-1。图4-1STM32CubeMX就是CubeMX软件是一个工具软件,我们只要在上面简单的点点点就可以生成我们的工作量,我们的工作重点放在项目任务的实现。CubeMX的使用介绍将会HAL的全称是:Hardware 的函数库,因为和HAL关,在这里,我们便称为HAL库。HAL库是一个由ST基于硬件抽象层而设计的软件函数包,它由程序、HAL库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外API(applicationprogramminginterface应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。在ST的中,HAL库是大势所趋,在ST公司开发的部分中,只有HAL库而没有标准库,从这点便可以说明,以后的目标是逐渐的转向HALCubeMX生成代码后,工程项目和初始化代码已经完成。简便了很多,而且最重要的是ST的大力推广,未来功能会更加的完善,CubeMX功能示意参考图4-2。图4-2CubeMXSTM32CubeMX现在已经支持STM32的全系列,列出F1的系列,见图4-3CubeMX支持的F1HALAPI类型(通用和扩展,API(应用程序编程接口)是一些预先定义的可以了。或者说更简单的:比如别人已经做好了一块几何处理程序,你想拿来APISTM32各系列产品的特有功能和扩展性能,提高HAL驱动的扩展性。图4-4推出HAL库的一个特点。回调函数由外设初始化、中断、处理完成/出错触发回调。如图4-5,此时,我们只需关心如何处理中断和异常。图4-5 开发软件安装及使序编写和调试我们一般都是使用Keil或者IAR软件,所以安装CubeMX软件之前请大家先安装STM32开发工具。Keil图5-1Keil:ht /download/product/到Keil下载版本软件。不过过程需要等操作,另外速度一般较为缓图5-2Keilh /dd2/st/stm32f103ze/到ST官方网站下载最新STM32F103ZE系列关于Keil软件平台的驱动包,得到Keil.STM32F1xx_DFP.2.0.0.pack文件。图5-3stm32f103ze系列驱硬石云盘云盘: /s/1hr8bwk0:KEILC51、ADS软件建议先卸载掉,不然很容易造成KEILSTM32软件无法正常使用。图5-4Keil图5-5证协择默认即可,点击Next按钮进入下一步。图5-6Keil图5-7Keil5-8Finish按钮完成安装,这时会自动弹出驱动包安装软件界面,见图5-9,这时我们点击弹出的框中的OK按钮。图5-8图5- Keil软 驱动包安装界 STM32F103Keil.STM32F1xx_DFP.2.0.0.pack文件,导入之后就会自动安装,等待安装完成后关闭驱动包安装软件就好,见图5-10。图5-10导入STM32F103系列驱动图5- 驱动包安装完Keil32KB的工程,比如无法编译YS_F1Pro开发板的出厂程序,这时我们需要使用Keil工具Keil,得到完整限。Keil软Keil的相关工具因涉及 使用管理员(这个是必须的)打开Keil软件,选择打开Keil证管理窗口(File->LicenseManagement…),见图5-12。图5-12Keil软 图5-13Keil软 准版的Keil软件,就不受32KB编译大小限制了。图5-14获 证数据因为我们还需要使用到STemWin和OS等功能,还需要“RealTimeOS”选项。重新设置软件,见图5-15,同样证数据都Keil软件证管理器中,见图5-16。这样Keil软件完成。图5-15获 证数据图5- Keil软件完只需要一个选项就好了,效果参考图5-17和图5-18。图5-17获取证数据—专业图5- IARIAR软件获图5-19IAR可以到硬石云盘云盘: /s/1hr8bwk0:IAR软件安5-19图5-20IAR图5-21IAR图5-22IAR图5-23IAR
图5-24IAR图5-25IAR图5-26IARFinish按钮后,有确认的点击确认(安装驱动图5-27IAR经过上述步骤,IAR软件只是安装完成了,下面是对IAR进行IAR软件图5-28IAR第一源很丰富。这里提供的IAR软件版本是7.40,相应的机即可。图5-29IAR第二机设置见图5-30,点击Generate按钮,生成码图5-30IAR机设图5-31 如图5-32,需要选择存放激活文件位置,ActivationInfo.txt。文件的存放位置,同安 图5-32 打开IAR机,如图5-33,点击“Activatelicense”后,进入存放路径选择(如果该路径内存在此文件,替换即可图5-33IAR第五图5-34 第七个步骤是选择激活回应文件,如图5-35。点击“下一步”,完成图5-35 STM32CubeMXSTM32CubeMX软件可以直接ST,具体如下 /catalog/tools/PF259242图5-36STCebeMX STM32CubeF1版本为V1.3.0,截图见图5-37:图5-37STM32CubeF1界对于STM32F1系列版本应该是V1.3.1,ST以补丁形式给出,要求更新,该补丁地址:5-
图5-38Patch_CubeFW_F1中,需要直接到我们云盘即可。 STM32CubeF1V1.3.0V1.3.1STM32CubeF1另外特别注意,从ST都是版本的,并且要求STM32CubeMX软件和STM32CubeF1这两个文件一起,不要使用旧版本文件和版本搭按照STM32CubeMX软件时首先会要求安装Java,大家根据自己电脑安装就可我们把重点放在新建STM32CubeMX工程上。安装支持
图5-39CubeMXYS-F1Pro开发板型号为STM32F103ZET6,这里需要安装STM32F1系列的支持包,见图5-40。图5-40STM32F103系列支持包安图5-41图5-42入见图5-43。图5-43STM32F103系 支持包导入完新建工首先选择“NewProject”5-44图5-44图5-45,然后点击OK按钮,自动弹出工程设置界面。图5-45选择型发板,这里设置使用外部晶振,并把PB0、PG6和PG7三个引脚设置为输出模式,见图5-46。图5-46图5-47界面内容与中的设置关。我们选择“GPIO”选项,在弹出的界面中设置图5-48GPIO同时,我们还可以查看与RCC图5-49见图5-50。图5-50图5-51堆栈大alloc或者malloc函设置使用KEILv5编译器的,我们还提供了基于IAR编译器的例程,设置见图图5-52设置工程名称和路径、KEILv5图5-53设置工程名称和路径、IAR5-54图5-545-55图5-555-56图5-56图5-57KEILv5IAR5-58图5-58IAR KEILv5和IAR软件使KEILv55STM32CubeMX生成工程时,Keil软件的工程配置,许多都软件的目标工具选项(OptionsforTarget“魔术棒”。图6-1KEIL(DeviceCPU,编号2的区域是该CPU的一些描述。生设置CubeMX时,我们已选择图6-2(arget图6-3RO(Flash地址,Size一栏输入大小。HEXCubeMX6-4图6-4(Listing图6-5(User图6-6让编译器能找到自己程序中包含的库文件,其实这和我们在程序中添加#include<>的原理是一样的。只不过是KEIL给我们一个更好的处理。在图6-7C/C++编程,所以不必理会。Linker是连接选项卡,对于不是特别大或者特殊的程(DebugCubeMXSetting,进入硬件调试仿真设置界面6-9FlashDownload界面,主要是对烧写程序的功能选项,CubeMX软件生成的配置是没有勾选ResetandRun的,在这里,勾选它是为了更方图6-8图6-9DebugCubeMXKEIL的在硬石HAL库例程中,为了使整体的程序界面更加清晰,提高易读性,以及方例程LEDBSP。具体工程组件、配置工具环境及管理书(管理工程项目bsp_led.c文图6-10图6-11编译图6-12成功实物IARIAREmbeddedWorkbenchforARMIARSystemsARM微处理器开发的一个集成开发环境(IARARM开发环境,IAR具有入在介绍IAR软件的使用方法,是针对CubeMX生成的工程来进行,首先是打开.夹下,打开工程“YS-F1Pro”,文件类型是:IARIDEWorkspace。图6-13IAR个工程。鼠标工程,选择Options,如图6-14。图6-14进入Options第一步是进行的选择,如图6-15图6-15图6-16运行库配置,如图6-17所示,选择None表示应用程序不运行库;选择Normal表示普通运行库,其中没有Locale接口和CLocale,不支持文件描述符,printfandscanf不支持多字节操作;选择Full表示完整运置文件。这里一般选择Full。图6-17Full。GeneralOptions的后面还有两个选项,因图6-18图6-19C/C++language2Charchar作为无符按无符号类型编译的,因此运行库时选择Signed可能导致类型不匹配错误。选项情况如图6-20。图6-20Char(OPtimization图6-211和编2所示。定义预处理符号在上一章节中已经讲解过。图6-22Converter图6-23nker,6-25、图6-26。图6-24器选图6-25内部FLASHRAM图6-266-27图6-27MAPMCU6-28图6-28MAPger选择ST-Link作为硬件调试设备。图6-29设置,这里选择“FLASHLoader”6-30图6-30设ST-Link6-31ST-LinkOK,完成工程的配置。其量很大,可见CubeMX的优势之处。图6-31ST-Link图6-32点击编译按钮,编译完成后,点击调试按钮,出现如图6-33所示调试界面,点击全速运行,即可观察到硬石开发板上LED呈流水灯亮暗。图6-33 程序编译和我们开发板默认使用STLINK,原因是德产JLINK器价格十分昂贵,而大陆版的JLINK因原因已无法在淘宝。其他器声称能代替JLINK,但过市场考验。终上所述,我们还是推荐ST的STLINKV2器。Keil软件方ST-Link驱动安ST-Link驱动地址为云盘 /s/1gfHHvY7ST-Linkv27-1图7-1ST-Linkv2ST-Linkv2_upgradeST-LinkV2固件升级工具,大家可以根据需要更新,我们出货时候已经测试可以使用的,所以一般不更新都是可以的。解压stsw-link009压缩包,得到如图7-2的内容:图7-2ST-LinkV2dpinst_amd64.exe文件,如果安装之后没有提装dpinst_x86.exe文件即可(因为有些驱动并不认CPU,大家尝试安装下)。图7-3ST-LinkV2管理器,可以看到会多一个设备:win10环境下可能显示为:说明ST-Link驱动安装已经成接下来我们只需要在MDK工程里配工程位打开文件工程,下面我将以我们流水灯工程为例,介绍如何编译与:首先打开光盘资料,寻找.uvprojx文件,我们的工程一般是在Project 7-4图7-4配置环图7-5ST-LinkV2连接方 方式,如示图7-图7-6设置模进入环境设置,如图7-图7-7器环境设设置主FLASH大小,STM32F103ZET6FLASH大小为512K,设置方式如图7-8,如已经设置好了,就无需设置:图7-8配置主FLASH大编译7-9图7-9ST-LinkV2成ISP方USB转串口驱, /s/1jH87LWy:76og。我们光盘里也有提供\YS-F1Pro光盘A_配套资料\5.包,请以管理员进行驱动安装。找到串口,如图7-10:图7-10USB硬件连默认接上),如图7-11所示:图7-11USB设置工具选设置方式设置电平点击图7-12ISP软件设成功画图7-13ISP成功界 另类HAL库版本工程创5STM32CubeMx软件创建合适我们自己开发平HALSTM32CubeMx软件确实可以减少我们很多工作,STM32CubeF1固件取,仔细的寻找下你总会找到。了我们开发板的可以直接在光盘中寻找到,命名为:en.stm32cubef1V1.4.0.zip的压缩文件;或者可以到官网去,这里提供一个:.cn/content/stcom/zh.html;你也可以自己搜索,搜索框中输入“ST”,进入官网,然后如下图8-1,接着搜索框输入“Cube”,在搜索结果中,选择第②步中的STM32CubeF1,点击进入。图8-1图8-2图8-3HALDrivers:里面有三个文件包,分别是BSP、CMSIS、STM32F1xx_HAL_DriverCMSISBSP库(BSP_LIB文件,Cortex-代码/系统文件等(Device文件夹。STM32StemWinUSB库等。Third_Party文件夹是第中间件,这些中间价都是非常成开源解决方案。建立工图8-4图8-5KEIL8-6图8-6KEILSTMicroelectronics->STM32F1Series->STM32F103ZE。选择好后点击OK。图8-7KEIL这里我们并没使用到,点击Cancel即可图8-8KEIL然后我们打开我们移植工程的MDK-ARM文件夹,可以看到图8-9,Listings和Objects是用来MDK编译过程的一些中间文件,这里其删除,替换成一个YS-F1Pro文件夹用作中间文件(后面会用到图8-9工程MDK- 下的是,在之前,首先将各个HAL库的Drivers文件夹,选择属性,在常规选项中,将只读属性的勾去掉,如果去掉了就不用理了。STM32Cube_F1_V1.40\STM32F1xx_HAL_Driver这个文件夹到移植工程\Driver中,保留STM32F1xx_HAL_Drever文件夹中的Inc和Src文件夹,其余全部删在DriversCMSISSTM32Cube_FW_F1_V1.4.0\Drivers\CMSIS。①:文件夹中的Device到移植工程\Drivers\CMSIS;②:文件夹中的DSP_Lib到移植工程\Drivers\CMSIS,保留DSP_Lib中的Source文件夹,其余全部删除;③:文件夹中的Include到移植工程\Drivers\CMSIS。一些关键的头文件和源文件到我们的工程。定位到:STM32Cube_FW_F1_V1.4.0\Projects\STM32F103RB-Nucleo\Temtes\Inc文件夹,将stm32f1xx_hal_conf.h和stm32f1xx_it.h到移植工程\Inc中;定位中,将main.c、stm32f1xx_hal_msp.c、stm32f1xx_it.c三个文件到移植工程\Src 中;接下来我们还需要一个文件,让我们定位到:lates,将system_stm32f1xx.c文件到移植工程\Src此外,我们还需要将硬石编写的bsp文件夹进来,打开我们硬石《YSF1_HAL-002.GPIO-流水灯》工程,将Src中的bsp文件到移植工(argets(Groups图8-10ManagementProject\\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Temtes\arm,文件名为Drivers/CMSIS:添加system_stm32f1xx.c文件,这里主要是定义了系统初始SystemInitSystemCoreClockUpdate。路径为:GPIOstm32f1xx_hal_gpio.c文件即可,(arget图8-11RO(Flash地址,Size一栏输入大小。HEX文件,前面的章节已经,这里将OUTPUT选择输出文件夹和LISTING的输出文件夹都选择为我们之前创建的YS-F1Pro文件夹。如图8-12和图图8-12图8-13(User图8-14C/C++选项卡,在图8-15中,定义预处理符号,和头文件路径的设置,是图8-15C/C++图8-16编程,所以不必理会。Linker是连接选项卡,对于不是特别大或者特殊的程(DebugSetting8-18FlashDownload界面,主要是对烧写程序的功能选项,比如勾选上ResetandRun,这样我们每一次完成后开发板会自动复位开始工作。图8-17图8-18Debugstm32f1xx_hal_msp.cCubeMX生成的工程时,main.c文件和stm32f1xx.c文件,根据自己工程的需求做出修改即可,这里直接《YSF1_HAL-002.GPIO-流水灯》例程中的对应内容。点击编译,运行,调8-19F7编译无错误后,按下图中的①调试(Debug)按钮,进F11,每点一次按钮,程序运行一步,遇到函数会跳进F10,没按一次按钮,程序运行一行,遇到函数跳过函图8-19Watch窗口,比如我们要查看“count”这个变量的值,将count为全局变Add‘count’to…Watch1,然后在下方就会出现Watch窗口,可以观察到Watch图8-20WatchMemory窗口,我们根据上一步骤,count变量,选择Add前加一个‘&’并按下回车键,将显示变量的物理地址改为0x 击窗口并选择Unsigned/Int,如图8-21所示,现在count的值便以32位的Memory,即可修改对应地址的值。图8-21Memory口,如图8-22。图8-22CallStack+Lcoals窗口,该窗口每当程序停止时会显示调用栈和当前函数的所以局部变量。如果可能,局部变量的值会显示,否则显示<notinscope>。菜View/CallStackWindowCallStack+Locals窗口显示或隐藏。们一个函数名,点击”ShowCallerCode”和”ShowCalleeCode”即可进图8-23 yzerDebug8-24图8-24TraceEnabl:使能SWV和ITM,这个选项只能在编辑模式修改,不会影响Watch和Memory窗口的更新。PCSamplingPC指针的采样,Prescaler,1024*1616384PC指针会显示1个,其他的不会;Periodieriod,使能PC指针采样;onData能和数据有关,但与PC采样无关。ITMStimulusPorts:使能用于在uVision中输出数据的类似printf的语句的3231KeilRTXViewer0用于六进制数,代表哪些端口是使能的;ricilegeRTOSITM端口TraceEventsCPU计数器。CPI,从第一个指令到每个指令所用的眠模式的累积周期数,使用FCLK时钟;LSU,从第一个周期开始,花费在该选项使能TraceExceptions窗口中异常的显示。完成上述步骤后编译并打开Debug,打开菜单View/ysisWindows,Logicyzer8-25即可,同时可以可以使用编号⑤的快捷方图8-25打开窗口后,count变量,将其Add到Logicyzer。点击第④步的Setup按钮,选count变量,将DispayRange的值改0x07,如图8-26,最后点击close。图8-26run(全速运行)8-27,点击ZoomOut可以改变DebugCoreClock的数值,甚至可能需要重新上电开发板。Logicyzer4个变量,必须是全局变量、静态变量或原始图8-27 寄存寄存器(Register部件中,包含的寄存器有指令寄存器(IR)和程序计数器。在处理器的算术微控制微控制器是将微型计算机的主要部分集成在一个上的单微型计算不作区别,单片机就是微控制器,微控制器就是单片机。STM32F103ST公ARMCortex-M3内核的微控制器。几个章节内容,见附件1)说明Cortex-M3内核:Cortex‐M3处理器内核是单片机的处理单元(CPU。完整的基于的MCU还需要很多其它组件。在制造商(比如ST、NXP、TI、Atmel等等)得到CM3处理器内核的使用后,它们就可以把CM3内核用在自己的硅片设计中,添加器,外设,I/O以及其它功能块,框图见图9-1。不同厂家设计出的单片机会有不同的配置,包括器容量、类型、外设等都各具特色。图9-1Cortex-M3ortex‐M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,器接口也是2位的。M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据并行不悖。这样一来数据不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个器空间(一个统一的器系统。换句话说,不是因为有两条总线,可寻址空间就变成GB了。 比,图9-1中的CM3内核就相当于电脑的CPU,器相当于电脑的硬盘和内存,内部总线相当于电脑的CPU与主板连接的导线…储器结构。处理器首先到程序指令器中程序指令内容,后常是执行。想了解什么是哈佛结构与冯诺依曼结构可以阅读附件2M3是一个32位处理器内核”,这样的一个结果就是CM3可以非常方便的找到地址在4G大小之内的地址,就是从0x 到0xFFFFFFFF。这个4G内部总图9-2。图9-2STM32F1x9-2CM3STM32CPU;ICode、DCode、SystemCode分别叫指令总线、数据总线、以及系统总线,这三个对应图9-1中根线,可以传输32位数据。ICodeFlashCM3FlashFlash9-1中存储器的一种,叫做程序器,我们编写程序后程序一般就是在FlashDCodeSystemCode连接在一个叫总线矩阵的东西上面,实际上,挂在总DMA、Flash接口、SRAM、FSMCAHB系统总线这几个部件。这里的SRAM相当于电脑的内存,属于图9-1中器的一种,叫做数据器,另外通过FSMC可以连接扩展SRAM,达到增加SRAM效果,就是添加一条DMA究竟是什么东西,在这里也没打算细讲,它的全称是:Directmemoryaccesscontroller(直接器存取控制器知道它是个操DMAFlash空间上数据传输SRAM上,这个过程可以无CM3内核的控制CPU是可以做其他运算工作的。关于DMA的其他内容我们在后面会详细讲解。 器映性地址空间内,可的器空间被分成8个主要块,每个块为512MB,其他的”器映射见图9-3,很多细节部分由半导体厂家自行定义。图9-3Cortex-M3器映射预定STM32F10x系列器映射情况见图9-4图9-4STM32F1的器映射实通过把片上外设的寄存器映射到外设区就可以简单地以内存的方式来这些外设的寄存器,从而控制外设的工作。结果,片上外设可以使用C语言来操作。这种预定义的映射关系,也使得对速度可以做高度的优化,而且对0到4GB,这些地址的存在使得我们编程变得统一化、简单化。比如把 ~0x40010BFF总共0x3FF长度的地址空间分配给PortA即端口A,端口A可以实现STM32的最基本功能:控制引脚输出高低电平,实际上端口A总共有16个引脚的,定义为PA0~PA15,每个引脚都可以单独控制的。当然端口A现这么多复杂的功能,显然就需要分配0x3FF长度空间给它用才行(实际上一般都是用不完的)。这样,比如,我们直接编写程序往0x 0x0001就可以使得PA0这个引脚输出高电平了,如果写入是0x0003就可以使得PA0和PA1都输出高电平。为什么会这样子呢?因为在STM32F103内部硬 于GPIO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学领域年度回顾与展望
- 精准引流入门课件
- 移动品牌策划公司创业
- 五级(初级)茶艺师模拟练习题+参考答案
- 2024-2025学年人教版高二化学选择性必修3配套课件 基础课时1 有机化合物的分类方法
- 肾内科专科模考试题与答案
- 创业立项项目结题答辩
- 校本研修汇报材料
- 中介股东协议合同范例
- 脑梗死后遗症的护理
- 立体构成-线立体课件
- 初中体育与健康人教7~9年级第7章 球类正面双手垫球教学设计及教案
- 小学劳动技术 北京版 三年级上册 装饰链 纸拉链 课件
- 展示空间设计(案例)
- 风力发电项目报价清单 (风机基础等)
- 《叶甫盖尼·奥涅金》41张幻灯片
- 沪教牛津版三年级英语下册全册课件
- MicrosoftOffice2016简体中文版下载及使用
- 招待所所长岗位职责内容范本
- 北师大版七年级生物下册 第8章 章末复习 课件(共18张PPT)
- 夹胶玻璃作业指导书
评论
0/150
提交评论