嵌入式系统设计(STM32)第2讲ppt课件

上传人:94****0 文档编号:240767893 上传时间:2024-05-06 格式:PPT 页数:100 大小:3.75MB
返回 下载 相关 举报
嵌入式系统设计(STM32)第2讲ppt课件_第1页
第1页 / 共100页
嵌入式系统设计(STM32)第2讲ppt课件_第2页
第2页 / 共100页
嵌入式系统设计(STM32)第2讲ppt课件_第3页
第3页 / 共100页
点击查看更多>>
资源描述
第第2讲讲 STM32最小系统最小系统第2讲 STM32最小系统下周一下午实验,带上笔记本电脑下周一下午实验,带上笔记本电脑n熟悉软件开发环境熟悉软件开发环境n笔记本需要安装的软件有:笔记本需要安装的软件有:nMDK4.70anSTM32固件库固件库V3.5nJLINK驱动驱动nPL2303驱动(驱动(USB转串口驱动)转串口驱动)nmcuisp.exe(STMISP下载器下载器)n串口调试助手串口调试助手n固件库使用手册固件库使用手册nSTM32中文参考手册中文参考手册_V10下周一下午实验,带上笔记本电脑熟悉软件开发环境目录目录n2.1STM32程序设计程序设计n2.1.1嵌入式嵌入式C语言知识精编语言知识精编n2.1.2嵌入式软件层次结构嵌入式软件层次结构n2.1.3FWlib(firmwarelibrary)固件库)固件库n2.2STM32最小系统最小系统n2.2.1电源电源n2.2.2复位电路复位电路n2.2.3时钟时钟n2.2.4下载电路下载电路n2.3STM32时钟配置时钟配置n2.4ARMCortex-M3处理器编程环境处理器编程环境(RealViewMDK)目录2.1 STM32程序设计2.1 STM32程序设计程序设计2.1.1嵌入式嵌入式C语言知识精编语言知识精编n关键字关键字nTypedef:给一个已经存在的数据类型取一个别名给一个已经存在的数据类型取一个别名nConst:常数常数nVolatile:变量,:变量,随时可能发生变化的。随时可能发生变化的。n符号符号参见表参见表3-2。n预处理预处理参见表参见表3-3。2.1 STM32程序设计2.1.1 嵌入式C语言知识精编2.1.2 嵌入式软件层次结构嵌入式软件层次结构nPC体系结构(图体系结构(图3-2)n嵌入式系统体系结构(图嵌入式系统体系结构(图3-3)n改进的嵌入式系统体系结构(图改进的嵌入式系统体系结构(图3-4)n虚拟虚拟BIOSn虚拟虚拟DOSn高端用户程序中的子程序高端用户程序中的子程序2.1.2 嵌入式软件层次结构PC体系结构(图3-2)2.1.3 FWlib(firmware library)固件库)固件库n该函数库是一个固件函数包,它由程序、数据结构和宏组该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。成,包括了微控制器所有外设的性能特征。n该函数库还包括每一个外设的驱动描述和应用实例。通过该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。应用每一个外设。n因此,使用本固态函数库可以大大减少用户的程序编写时因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。间,进而降低开发成本。n每个外设驱动都由一组函数组成,这组函数覆盖了该外设每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface应用编程界面应用编程界面)驱驱动,动,API对该驱动程序的结构,函数和参数名称都进行了对该驱动程序的结构,函数和参数名称都进行了标准化。标准化。n现在用的固件库版本是现在用的固件库版本是stm32固件库固件库V3.5,可以网上下载。可以网上下载。2.1.3 FWlib(firmware library)固文档和库规范文档和库规范一、缩写一、缩写缩写缩写外设外设/单元单元GPIO通用输入通用输入/输出输出NVIC嵌套中断向量列表控制器嵌套中断向量列表控制器EXTI外部中断事件控制器外部中断事件控制器RCC复位与时钟控制器复位与时钟控制器SysTick系统嘀嗒定时器系统嘀嗒定时器TIM通用定时器通用定时器USART通用同步异步接收发射端通用同步异步接收发射端文档和库规范一、缩写二、命名规则二、命名规则固态函数库遵从以下命名规则:固态函数库遵从以下命名规则:1.PPP表示任一外设缩写,例如:表示任一外设缩写,例如:ADC。2.源程序文件和头文件命名都以源程序文件和头文件命名都以“stm32f10 x_”作为开头,例如:作为开头,例如:stm32f10 x_conf.h。3.常量仅被应用于一个文件的,定义于该文件中;被应用于多个文常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。件的,在对应头文件中定义。所有常量都由英文字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。4.外设函数的命名以该外设的缩写加下划线为开头。每个单词的第外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写,例如:一个字母都由英文字母大写书写,例如:SPI_SendData。在函。在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。其它部分。二、命名规则固态函数库遵从以下命名规则:4.名为名为PPP_Init的函数,其功能是根据的函数,其功能是根据PPP_InitTypeDef中指定的参数,中指定的参数,初始化外设初始化外设PPP5.名为名为PPP_DeInit的函数,其功能为复位外设的函数,其功能为复位外设PPP的所有寄存器至缺的所有寄存器至缺省值,例如省值,例如TIM_DeInit.名为名为PPP_StructInit的函数,其功能为通过的函数,其功能为通过设置设置PPP_InitTypeDef结构中的各种参数来定义外设的功能,例如:结构中的各种参数来定义外设的功能,例如:USART_StructInit6.名为名为PPP_Cmd的函数,其功能为使能或者失能外设的函数,其功能为使能或者失能外设PPP,例如:,例如:SPI_Cmd.7.名为名为PPP_ITConfig的函数,其功能为使能或者失能来自外设的函数,其功能为使能或者失能来自外设PPP某某中断源,例如:中断源,例如:RCC_ITConfig.名为PPP_Init的函数,其功能是根据PPP_InitTy8.名为名为PPP_DMAConfig的函数,其功能为使能或者失能外设的函数,其功能为使能或者失能外设PPP的的DMA接口,例如:接口,例如:TIM1_DMAConfig.用以配置外设功能的用以配置外设功能的函数,总是以字符串函数,总是以字符串“Config”结尾,例如结尾,例如GPIO_PinRemapConfig.9.名为名为PPP_GetFlagStatus的函数,其功能为检查外设的函数,其功能为检查外设PPP某标某标志位被设置与否,例如:志位被设置与否,例如:I2C_GetFlagStatus.10.名为名为PPP_ClearFlag的函数,其功能为清除外设的函数,其功能为清除外设PPP标志位,标志位,例如:例如:I2C_ClearFlag.11.名为名为PPP_GetITStatus的函数,其功能为判断来自外设的函数,其功能为判断来自外设PPP的的中断发生与否,例如:中断发生与否,例如:I2C_GetITStatus.12.名为名为PPP_ClearITPendingBit的函数,其功能为清除外设的函数,其功能为清除外设PPP中断待处理标志位,例如:中断待处理标志位,例如:I2C_ClearITPendingBit.名为PPP_DMAConfig的函数,其功能为使能或者失能外三、编码规则三、编码规则n变量变量固态函数库定义了固态函数库定义了2424个变量类型,他们的类型和大小是个变量类型,他们的类型和大小是固定的。固定的。在文件在文件stm32f10 x_type.hstm32f10 x_type.h中我们定义了这些变量:中我们定义了这些变量:typedef signed long s32;typedef signed long s32;typedef signed short s16;typedef signed short s16;typedef signed char s8;typedef signed char s8;typedef unsigned long u32;typedef unsigned long u32;typedef unsigned short u16;typedef unsigned short u16;typedef unsigned char u8;typedef unsigned char u8;。三、编码规则变量n布尔型布尔型在文件在文件stm32f10 x_type.h中,布尔形变量被定中,布尔形变量被定义如下:义如下:typedef enum FALSE=0,TRUE=!FALSE bool;布尔型n标志位状态类型在文件在文件stm32f10 x_type.h中,定义标志位类型中,定义标志位类型(FlagStatustype)的)的2个可能值为个可能值为“设置设置”与与“重置重置”(SETorRESET)。)。typedef enum RESET=0,SET=!RESET FlagStatus;标志位状态类型n功能状态类型功能状态类型在文件在文件stm32f10 x_type.h中,我们定义功能状态中,我们定义功能状态类型(类型(FunctionalState type)的)的2个可能值为个可能值为“使能使能”与与“失能失能”(ENABLE or DISABLE)。)。typedef enum DISABLE=0,ENABLE=!DISABLE FunctionalState;功能状态类型n错误状态类型错误状态类型在文件在文件stm32f10 x_type.h中,定义错误状态类型中,定义错误状态类型(ErrorStatus type)的)的2个可能值为个可能值为“成功成功”与与“出错出错”(SUCCESS or ERROR)。)。typedef enum ERROR=0,SUCCESS=!ERROR ErrorStatus;错误状态类型n外设用户可以通过指向各外设用户可以通过指向各个外设的指针访问各外设个外设的指针访问各外设的控制寄存器。这些指针的控制寄存器。这些指针所指向的数据结构与各个所指向的数据结构与各个外设的控制寄存器布局一外设的控制寄存器布局一一对应。一对应。n外设控制寄存器结构外设控制寄存器结构文件文件stm32f10 x_map.h包含了包含了所有外设控制寄存器的结所有外设控制寄存器的结构。构。n例如例如SPI寄存器结构的声明:寄存器结构的声明:外设用户可以通过指向各个外设的指针访问各外设的控制寄存器。这2.2 STM32最小系统最小系统n能让单片机工作的最小单元,即是最小系统。2.2.1电源电源2.2 STM32最小系统能让单片机工作的最小单元,即是最小STM32F103VBSTM32F103VBn开发板上,可以开发板上,可以DC5V,或者或者USB5V,一般用电脑一般用电脑USB口供电。口供电。nR1:保险电阻:保险电阻nC1、C2:滤波电容:滤波电容nAMS1117-3.3:把把5V转换成转换成3.3Vn三端可调或固定电压三端可调或固定电压3.3V,n输出电流为输出电流为1A,n线路调整率:线路调整率:0.2%(最大)(最大)n负载调整率:负载调整率:0.4%(最大)(最大)开发板上,可以DC5V,或者USB5V,一般用电脑USB口2.2.2 复位电路复位电路STM32支持支持3种复位:系统复位、上电复位、备份区域复位。种复位:系统复位、上电复位、备份区域复位。当以下事件中的一件发生时,产生系统复位:当以下事件中的一件发生时,产生系统复位:n1.NRST管脚上的低电平管脚上的低电平(外部复位外部复位)n2.窗口看门狗计数终止窗口看门狗计数终止(WWDG复位复位)n3.独立看门狗计数终止独立看门狗计数终止(IWDG复位复位)n4.软件复位软件复位(SW复位复位)n5.低功耗管理复位低功耗管理复位NRST2.2.2 复位电路STM32支持3种复位:系统复位、上电复当以下事件中之一发生时,产生电源复位:当以下事件中之一发生时,产生电源复位:n1.上电上电/掉电复位掉电复位(POR/PDR复位复位)n2.从待机模式中返回从待机模式中返回当以下事件中之一发生时,产生备份区域复位。当以下事件中之一发生时,产生备份区域复位。n1.软件复位,备份区域复位可由设置备份区域控制寄存器软件复位,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的中的BDRST位产生。位产生。n2.在在VDD和和VBAT两者掉电的前提下,两者掉电的前提下,VDD或或VBAT上电将引发备上电将引发备份区域复位。份区域复位。当以下事件中之一发生时,产生电源复位:2.2.3 时钟树时钟树nP83图图4-3系统时钟(系统时钟(SYSCLKSYSCLK)的产生)的产生n来源有来源有3个:个:HSI,PLLCLK,HSEn由由SW(时钟配置寄存器(时钟配置寄存器RCC_BDCR的的D0位和位和D1位)控制选择。位)控制选择。nSW1:0=00,HSI,内部,内部n01,HSE,外部,外部n10,PLLCLK,锁相环,倍频,锁相环,倍频n锁相环输入来自锁相环输入来自HSI/2或者或者HSE,由由PLLSRC控制选择。控制选择。n锁相环倍频系数由锁相环倍频系数由PLLMUL(RCC_BDCR的的D21D18位)控制。位)控制。n外部时钟接外部时钟接4-18MHz,开发板接开发板接8MHz2.2.3 时钟树P83 图4-3嵌入式系统设计(STM32)第2讲ppt课件开发板上的外接时钟电路开发板上的外接时钟电路开发板上的外接时钟电路2.2.4 下载电路下载电路开发板支持开发板支持JTAG下载和串口下载下载和串口下载nJTAG下载。下载。JLINK一端接电脑,另一端接开发板一端接电脑,另一端接开发板2.2.4 下载电路开发板支持JTAG下载和串口下载n串口下载 PL2303:USB转串口串口下载2.3 STM32时钟配置时钟配置在在STM32中,有五个时钟源中,有五个时钟源:HSI、HSE、LSI、LSE、PLL。HSI是高速内部时钟,是高速内部时钟,RC振荡器,频率为振荡器,频率为8MHz。HSE是高速外部时钟,可接石英是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时陶瓷谐振器,或者接外部时钟源,频率范围为钟源,频率范围为4MHz16MHz。LSI是低速内部时钟,是低速内部时钟,RC振荡器,频率为振荡器,频率为40kHz。LSE是低速外部时钟,接频率为是低速外部时钟,接频率为32.768kHz的石英晶体。的石英晶体。PLL为锁相环倍频输出,其时钟输入源可选择为为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者或者HSE/2。倍频可选择为。倍频可选择为216倍,但是其输出频率最倍,但是其输出频率最大不得超过大不得超过72MHz。2.3 STM32时钟配置在STM32中,有五个时钟源:HnAHB(HCLK)时钟=SYSCLK=72MHzAPB2(PCLK2)时钟=AHB时钟=36MHzAPB1(PCLK1)时钟=AHB 1/2时钟=72MHzADC时钟=PCLK2 1/4=9MHzPLL时钟=HSE*9=72MHz AHB(HCLK)时钟=SYSCLK=72MHz嵌入式系统设计(STM32)第2讲ppt课件在在STM32上如果不使用外部晶振,上如果不使用外部晶振,OSC_IN和和OSC_OUT的接法的接法 如果使用内部如果使用内部RC振荡器而不使用外部晶振,请按照下面方振荡器而不使用外部晶振,请按照下面方法处理:法处理:n1)对于)对于100脚或脚或144脚的产品,脚的产品,OSC_IN应接地,应接地,OSC_OUT应悬空。应悬空。n2)对于少于)对于少于100脚的产品,有脚的产品,有2种接法:种接法:n2.1)OSC_IN和和OSC_OUT分别通过分别通过10K电阻接地。电阻接地。此方法可提高此方法可提高EMC(电磁兼容)性能。性能。n2.2)分别重映射)分别重映射OSC_IN和和OSC_OUT至至PD0和和PD1,再配置,再配置PD0和和PD1为推挽输出并输出为推挽输出并输出0。在STM32上如果不使用外部晶振,OSC_IN和OSC_OU时钟配置是与时钟配置是与RCC寄存器密切联系的。寄存器密切联系的。RCC寄存器(寄存器(10个)个)时钟配置是与RCC寄存器密切联系的。RCC寄存器(10个)RCC寄存器结构寄存器结构在文件在文件“stm32f10 x_map.h”中,中,RCC_TypeDef定义如下:定义如下:typedefstructvu32CR;vu32CFGR;vu32CIR;vu32APB2RSTR;vu32APB1RSTR;vu32AHBENR;vu32APB2ENR;vu32APB1ENR;vu32BDCR;vu32CSR;RCC_TypeDef;RCC寄存器结构在文件“stm32f10 x_map.h”中,使用使用HSE时钟,程序设置时钟参数流程:时钟,程序设置时钟参数流程:RCC:n1)将)将RCC寄存器重新设置为默认值寄存器重新设置为默认值RCC_DeInit;n2)打开外部高速时钟晶振)打开外部高速时钟晶振HSERCC_HSEConfig(RCC_HSE_ON);n3)等待外部高速时钟晶振工作)等待外部高速时钟晶振工作HSEStartUpStatus=RCC_WaitForHSEStartUp();n4)设置)设置AHB时钟时钟RCC_HCLKConfig;n5)设置高速)设置高速AHB时钟时钟RCC_PCLK2Config;n6)设置低速)设置低速AHB时钟时钟RCC_PCLK1Config;n7)设置)设置PLLRCC_PLLConfig;n8)打开)打开PLLRCC_PLLCmd(ENABLE);n9)等待)等待PLL工作工作while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)n10)设置系统时钟)设置系统时钟RCC_SYSCLKConfig;n11)判断是否)判断是否PLL是系统时钟是系统时钟while(RCC_GetSYSCLKSource()!=0 x08)n12)打开要使用的外设时钟)打开要使用的外设时钟RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()使用HSE时钟,程序设置时钟参数流程:RCC:1)将RCC系统时钟初始化函数的实现下面是下面是STM32软件固件库的程序中对软件固件库的程序中对RCC的配置函数的配置函数(使用外部使用外部8MHz晶振晶振):nvoidRCC_Configuration(void)n/*将外设将外设RCC寄存器重设为缺省值寄存器重设为缺省值*/nRCC_DeInit();/*设置外部高速晶振(设置外部高速晶振(HSE)*/nRCC_HSEConfig(RCC_HSE_ON);n/RCC_HSE_ON,HSE晶振打开晶振打开(ON)n/*等待等待HSE起振起振*/nHSEStartUpStatus=RCC_WaitForHSEStartUp();nif(HSEStartUpStatus=SUCCESS)n/SUCCESS:HSE晶振稳定且就绪晶振稳定且就绪n/*设置设置AHB时钟(时钟(HCLK)*/nRCC_HCLKConfig(RCC_SYSCLK_Div1);n/RCC_SYSCLK_Div1AHB时钟时钟=系统时钟系统时钟n/*设置高速设置高速AHB时钟(时钟(PCLK2)*/nRCC_PCLK2Config(RCC_HCLK_Div1);n/RCC_HCLK_Div1APB2时钟时钟=HCLK系统时钟初始化函数的实现下面是STM32软件固件库的程序中对n/*设置低速设置低速AHB时钟(时钟(PCLK1)*/nRCC_PCLK1Config(RCC_HCLK_Div2);n/RCC_HCLK_Div2APB1时钟时钟=HCLK/2n/*设置设置FLASH存储器延时时钟周期数存储器延时时钟周期数*/nFLASH_SetLatency(FLASH_Latency_2);n/FLASH_Latency_2,2延时周期延时周期n/*选择选择FLASH预取指缓存的模式预取指缓存的模式*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);n/预取指缓存使能预取指缓存使能n/*设置设置PLL时钟源及倍频系数时钟源及倍频系数*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);n/PLL的输入时钟的输入时钟=HSE时钟频率时钟频率RCC_PLLMul_9,PLL输入时钟输入时钟x9n/*使能使能PLL*/nRCC_PLLCmd(ENABLE);n/*检查指定的检查指定的RCC标志位标志位(PLL准备好标志准备好标志)设置与否设置与否*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)n/*设置系统时钟(设置系统时钟(SYSCLK)*/nRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*设置低速AHB时钟(PCLK1)*/n/RCC_SYSCLKSource_PLLCLK选择选择PLL作为系统时钟作为系统时钟n/*PLL返回用作系统时钟的时钟源返回用作系统时钟的时钟源*/while(RCC_GetSYSCLKSource()!=0 x08)n/0 x08:PLL作为系统时钟作为系统时钟nnn/*使能或者失能使能或者失能APB2外设时钟外设时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);n/RCC_APB2Periph_GPIOAGPIOA时钟时钟n/RCC_APB2Periph_GPIOBGPIOB时钟时钟n/RCC_APB2Periph_GPIOCGPIOC时钟时钟n/RCC_APB2Periph_GPIODGPIOD时钟时钟n/RCC_SYSCLKSource_PLLCLK选择PL32位基于位基于ARM微控制器微控制器STM32F101xx与与STM32F103xx 固件函数库固件函数库32位基于ARM微控制器STM32F101xx与STM32F嵌入式系统设计(STM32)第2讲ppt课件嵌入式系统设计(STM32)第2讲ppt课件函数RCC_DeInit 函数RCC_DeInit 函数函数RCC_HSEConfig 函数RCC_HSEConfig 函数函数RCC_WaitForHSEStartUp 函数RCC_WaitForHSEStartUp 嵌入式系统设计(STM32)第2讲ppt课件函数函数RCC_HCLKConfig 函数RCC_HCLKConfig RCC_HCLK值值RCC_HCLK值函数函数RCC_PCLK2Config 函数RCC_PCLK2Config RCC_PCLK2值值RCC_PCLK2值函数函数RCC_PCLK1Config 函数RCC_PCLK1Config RCC_PCLK1值值RCC_PCLK1值函数函数FLASH_SetLatency 函数FLASH_SetLatency FLASH_Latency值值FLASH_Latency值函数函数FLASH_PrefetchBufferCmd 函数FLASH_PrefetchBufferCmd n例:/*Enable The Prefetch Buffer*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);例:/*Enable The Prefetch Buff函数函数RCC_PLLConfig 函数RCC_PLLConfig RCC_PLLSource值值RCC_PLLSource值RCC_PLLMul值(值(216倍)倍)RCC_PLLMul值(216倍)警告:必须正确设置软件,使警告:必须正确设置软件,使PLL输出时钟输出时钟频率不超过频率不超过72 MHz 警告:必须正确设置软件,使PLL输出时钟频率不超过72 MH函数RCC_PLLCmd 函数RCC_PLLCmd 函数函数RCC_GetFlagStatus 函数RCC_GetFlagStatus RCC_FLAG值RCC_FLAG值嵌入式系统设计(STM32)第2讲ppt课件函数函数RCC_SYSCLKConfig 函数RCC_SYSCLKConfig RCC_SYSCLKSource RCC_SYSCLKSource 函数函数RCC_GetSYSCLKSource 函数RCC_GetSYSCLKSource 嵌入式系统设计(STM32)第2讲ppt课件函数RCC_APB2PeriphClockCmd 函数RCC_APB2PeriphClockCmd RCC_AHB2Periph值RCC_AHB2Periph值例如:n/*Enable GPIOA,GPIOB and SPI1 clocks*/nRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_SPI1,ENABLE);例如:/*Enable GPIOA,GPIOB and 嵌入式系统设计(STM32)第2讲ppt课件2.4 工程模板的建立工程模板的建立2.4.1ARMCortex-M3处理器编程环境处理器编程环境需要准备的资料需要准备的资料:n1.STM32F10 x_StdPeriph_Lib_V3.5.0(这是这是ST官网下载的固件库完整版官网下载的固件库完整版)n2.安装安装MDK4.70a(Keil)n3.注册注册License(破解破解,如果不破解只能支持如果不破解只能支持32K的代码的代码)安装成功后,桌面上安装成功后,桌面上Keil4显示图标显示图标2.4 工程模板的建立2.4.1 ARM Cortex-M3n固件库是压缩文件,解压缩后,准备编程时用。固件库是压缩文件,解压缩后,准备编程时用。固件库是压缩文件,解压缩后,准备编程时用。2.4.2 新建工程2.4.2 新建工程输入工程名,保存输入工程名,保存选择CPU,STM32F103VB选择CPU,STM32F103VBn弹出对话框弹出对话框“CopySTM32StartupCodetoproject.”,询问是否添加启动代码到我们的工程中,这里我,询问是否添加启动代码到我们的工程中,这里我们选择们选择“否否”,因为我们使用的,因为我们使用的ST固件库文件已经包固件库文件已经包含了启动文件。含了启动文件。弹出对话框“Copy STM32 Startup Code n接下来,在接下来,在Template工程目录下面,新建工程目录下面,新建3个个文件夹文件夹CORE,USER,STM32F10 x_FWLib。nUSER用来放我们主函数文件用来放我们主函数文件main.c,以及其他以及其他包括包括system_stm32f10 x.c等等,等等,nCORE用来存放启动文件等,用来存放启动文件等,nSTM32F10 x_FWLib文件夹顾名思义用来存放文件夹顾名思义用来存放ST官方提供的库函数源码文件。官方提供的库函数源码文件。n还可以新建一个还可以新建一个OUTPUT文件夹,用来放。文件夹,用来放。HEX等编译输出的文件。等编译输出的文件。接下来,在Template工程目录下面,新建3个文件夹 CO嵌入式系统设计(STM32)第2讲ppt课件n下面要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。下面要将官方的固件库包里的源码文件复制到我们的工程目录文件夹n我们只用到我们只用到arm目录下面的目录下面的startup_stm32f10 x_md.s文文件,这个文件是针对中等容量芯片的启动文件。件,这个文件是针对中等容量芯片的启动文件。n其他两个主要的为其他两个主要的为startup_stm32f10 x_ld.s为小容量,为小容量,startup_stm32f10 x_hs.c为大容量芯片的启动文件。这为大容量芯片的启动文件。这里里copy进来是方便其他开发者使用小容量或者大容量芯进来是方便其他开发者使用小容量或者大容量芯片的用户。片的用户。我们只用到arm目录下面的startup_stm32f10 x嵌入式系统设计(STM32)第2讲ppt课件将目录下面的将目录下面的src、inc文件夹文件夹copy到到STM32F10 x_FWLib文件夹下面。文件夹下面。src存放的是固件库的存放的是固件库的.c文件,文件,inc存放的是存放的是对应的对应的.h文件,每个外设对应一个文件,每个外设对应一个.c文件和一个文件和一个.h头文件。头文件。将目录下面的src、inc文件夹copy到STM32F10 x下面将这些文件加入我们的工程中去。右键点击下面将这些文件加入我们的工程中去。右键点击Target1,选择,选择Manage Components 下面将这些文件加入我们的工程中去。右键点击Target1,选Project Targets一栏,将一栏,将Target名字修改为名字修改为Template,然后然后在在Groups一栏删掉一个,建立三个一栏删掉一个,建立三个Groups:USER,CORE,FWLIB.点击点击OK.Project Targets一栏,将Target名字修改为嵌入式系统设计(STM32)第2讲ppt课件n下面我们往Group里面添加我们需要的文件。右键点击点击Tempate,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才建立的目录STM32F10 x_FWLib/src下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件下面我们往Group里面添加我们需要的文件。右键点击点击Te嵌入式系统设计(STM32)第2讲ppt课件嵌入式系统设计(STM32)第2讲ppt课件嵌入式系统设计(STM32)第2讲ppt课件n下面我们点击编译按钮下面我们点击编译按钮编译工程,编译工程,可以看到很多报错,因为找不到库文件。可以看到很多报错,因为找不到库文件。下面我们点击编译按钮 编n下面要告诉MDK,在哪些路径之下搜索相应的文件。n回到工程主菜单,点击魔术棒,出来一个菜单,然后点击 c/c+选项.然后点击Include Paths右边的按钮。弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击OK.下面要告诉MDK,在哪些路径之下搜索相应的文件。嵌入式系统设计(STM32)第2讲ppt课件嵌入式系统设计(STM32)第2讲ppt课件n重新定位到c/c+界面,然后copy“STM32F10X_MD,USE_STDPERIPH_DRIVER”到 Define里面。重新定位到c/c+界面,然后copy“STM32F10X在编译之前,我们记得打开工程在编译之前,我们记得打开工程USUR下面的下面的main.c,复,复制下面代码到制下面代码到main.c覆盖已有代码,然后进行编译。(记覆盖已有代码,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告)得在代码的最后面加上一个回车,否则会有警告)n#include stm32f10 x.h nGPIO_InitTypeDef GPIO_InitStructure;nint main(void)n nSystemInit();nRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);nGPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2;nGPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;在编译之前,我们记得打开工程USUR下面的main.c,复制nGPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;nGPIO_Init(GPIOD,&GPIO_InitStructure);nwhile(1)n n/*Set PD0 and PD2*/nGPIOD-BSRR=0 x00000005;n/*Reset PD0 and PD2*/nGPIOD-BRR=0 x00000005;n n GPIO_InitStructure.GPIO_Mode=n这次编译可以看出,已经成功了。这样一个工程模版建立完毕。n下面还需要配置,让编译之后能够生成hex文件。同样点击魔术棒,进入配置菜单,选择Output。然后勾上下三个选项。其中Create HEX file是编译生成hex文件这次编译可以看出,已经成功了。这样一个工程模版建立完毕。嵌入式系统设计(STM32)第2讲ppt课件练习题二n1.STM32F103VBT6中,中,V的含义是(),的含义是(),B含义是()含义是()。n2.数据类型数据类型uv32定义的是()类型数据。定义的是()类型数据。n3.STM32F103VBT6工作电压是()。工作电压是()。n4.STM32F103VBT6最高工作频率是()。最高工作频率是()。n5.STM32的系统时钟有的系统时钟有3个来源个来源:()、()、()。:()、()、()。由()来控制选择。由()来控制选择。n6.HSE时钟频率范围是()时钟频率范围是()n7.LSE时钟频率是()。时钟频率是()。n8.STM32时钟系统很复杂,原因在于()。时钟系统很复杂,原因在于()。练习题二1.STM32F103VBT6中,V的含义是(),n9.APB2最高工作频率是()。最高工作频率是()。n10.APB1最高工作频率是()。最高工作频率是()。n11.PLL的作用是实现()。的作用是实现()。n12.STM32的复位采用()电平复位。的复位采用()电平复位。n13.一般一个工程中包含一般一个工程中包含3个组(个组(group):CORE、USER和和LIB。分别用来()、()和()。分别用来()、()和()n14.STM32系列产品,根据存储器容量大小分成三类系列产品,根据存储器容量大小分成三类()、()、()。在下载程序时,要在环境中进行()、()、()。在下载程序时,要在环境中进行设置。设置。n15.STM32支持两种下载方式支持两种下载方式:()下载和()下载。:()下载和()下载。9.APB2最高工作频率是()。n16.RCC的英文全称是()。的英文全称是()。n17.RCC寄存器一共包括()个寄存器。寄存器一共包括()个寄存器。n18.时钟配置主要包括两个部分:配置()时时钟配置主要包括两个部分:配置()时钟和开启()时钟。钟和开启()时钟。n19.RCC_DeInit函数的功能是()。函数的功能是()。n20.RCC_PLLCmd(ENABLE)的功能是()。的功能是()。16.RCC的英文全称是()。
展开阅读全文
相关资源
  • (通用版)高考历史大一轮复习 跟踪检测评估26 近代西方人文精神的起源及其发展(含解析)-人教版高三历史试题(通用版)高考历史大一轮复习 跟踪检测评估26 近代西方人文精神的起源及其发展(含解析)-人教版高三历史试题
  • (通用版)高考历史一轮复习 第十五单元 考点2 20世纪以来的重大理论成果巩固提升-人教版高三历史试题(通用版)高考历史一轮复习 第十五单元 考点2 20世纪以来的重大理论成果巩固提升-人教版高三历史试题
  • (通用版)高考化学一轮复习 跟踪检测(二十九)认识层面 原子结构、化学键(有什么)(含解析)-人教版高三化学试题(通用版)高考化学一轮复习 跟踪检测(二十九)认识层面 原子结构、化学键(有什么)(含解析)-人教版高三化学试题
  • (通用版)高考历史二轮复习 第一部分模块二 世界古代、近代篇 第一步 专题优化 专题六 西方人文精神的起源与发展及社会主义理论与实践课时提升训练-人教版高三历史试题(通用版)高考历史二轮复习 第一部分模块二 世界古代、近代篇 第一步 专题优化 专题六 西方人文精神的起源与发展及社会主义理论与实践课时提升训练-人教版高三历史试题
  • (通用版)高考历史二轮复习 第一部分模块三 中国近代篇 第二步 通史串讲 第7讲 近代中国的觉醒与探索——甲午中日战争至五四运动前对点训练-人教版高三历史试题(通用版)高考历史二轮复习 第一部分模块三 中国近代篇 第二步 通史串讲 第7讲 近代中国的觉醒与探索——甲午中日战争至五四运动前对点训练-人教版高三历史试题
  • (通用版)高考历史二轮专题复习 专题六 西方人文精神的发展课时作业-人教版高三历史试题(通用版)高考历史二轮专题复习 专题六 西方人文精神的发展课时作业-人教版高三历史试题
  • (通用版)高考历史二轮复习 板块四 从地中海沿岸的早期辉煌到开放扩张中的工业文明综合检测B卷-人教版高三历史试题(通用版)高考历史二轮复习 板块四 从地中海沿岸的早期辉煌到开放扩张中的工业文明综合检测B卷-人教版高三历史试题
  • (通用版)高考历史二轮复习 第一部分模块五 中国现代篇 第一步 专题优化 专题十五 马克思主义中国化的理论成果及科技文化课时提升训练-人教版高三历史试题(通用版)高考历史二轮复习 第一部分模块五 中国现代篇 第一步 专题优化 专题十五 马克思主义中国化的理论成果及科技文化课时提升训练-人教版高三历史试题
  • (通用版)高考化学一轮复习 跟踪检测(六十二)大题考法(3)物质制备型综合实验(含解析)-人教版高三化学试题(通用版)高考化学一轮复习 跟踪检测(六十二)大题考法(3)物质制备型综合实验(含解析)-人教版高三化学试题
  • (通用版)高考历史二轮复习 第一部分模块三 中国近代篇 第三步 中外关联通史模块集训-人教版高三历史试题(通用版)高考历史二轮复习 第一部分模块三 中国近代篇 第三步 中外关联通史模块集训-人教版高三历史试题
  • 相关搜索

    最新文档


    当前位置:首页 > 办公文档 > 教学培训


    copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

    备案号:ICP2024067431-1 川公网安备51140202000466号


    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!