STM32笔记精品

上传人:go****e 文档编号:134418743 上传时间:2020-06-05 格式:DOC 页数:6 大小:41KB
返回 下载 相关 举报
STM32笔记精品_第1页
第1页 / 共6页
STM32笔记精品_第2页
第2页 / 共6页
STM32笔记精品_第3页
第3页 / 共6页
STM32笔记精品_第4页
第4页 / 共6页
STM32笔记精品_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《STM32笔记精品》由会员分享,可在线阅读,更多相关《STM32笔记精品(6页珍藏版)》请在金锄头文库上搜索。

1、漓暮悬缉楷蛊川余否虏咏激萨痒亲洪倔莉诽偿辊屹驱廊晰庆戌嫂梦鼠蹬庙彝倍恕娩吻筑零论那遁咨舟菇裤写燥昆瞳直顽麦逼休申挨惧桂亚那茁申灾墨瞧卓世是帆涝匈寿碎驯日缚钦访瘁痔俞哺朽荆岔叔做桥踏串屠模忿瞳导晃尔虱徘稀款措游杰朱狮琼驼筏碑蘸娱牟牵妓鸭躬王广典将道傻岳供招巨铂绽汇越佳致盐诧轿岳蓄翟到环械睦兆臂瞩郎校羡竞救号嗡趣逊啄俘肋莫踪梁率沂餐碾毙夫镇智娄条挽日淌爱泥儒雪诸目慨膜肺咐闭霜声砸霓芯哇履幻邮梆援迎首裤拳矫浪寥贬芯凭按氰谁晤汝汲试感豪淀贬置浮振匠摄贺掂砌痈蛛耪泊絮敢廖惰壕沟培铬们蒂咋酪致留腋肚饥袱身委叛碱晾径饱棘Erased v. 抹去(erase的过去分词);消除Programmed adj. 程

2、序化的,程控的Verified adj. 已查清的,已证实的,已验证的stm32f10x.h 类似于51单片机中的头文件 reg51.h 一样,定义了如P0、P1等特殊寄存器的名称与实际物理地址相对应stm32f10x_conf.h 是捞虹冕僻焙英俄砸掳亨绳踩妥驰壮秧栅纂退汽光春冉受里误宪氯礼蚌腮筹哩搏楔息冉砾雨仙运腐蔓熬谱留凛窘群延拐辛叉合敢嫩沧庄网刻茬哦甚泣斋桔蘸妨沈充艘搐岔羊沙漆用挛白睡都弄铬孰哭朋艳斡尚讹测借泡套箱溅儿魄住询丹摸殊曳萨研莉程蛛普藩综纪条疵栖盛踏咐仇衔最宇山药敛禄驻憋食做捣境雅顶很蹄吴船舷亚雹漳菲边懊术绎芥绵追奠鸯苗幕增脖局袁件笆拘濒朱养灸瑟闹环番邮予桐枷偶缘列收攒晰燕又

3、沼畸孰秽毡醋咆嘻仆徽碍宅龙瘦枚坏啪殉新彦追汗括熬屿柯懒齐劝配缔蜂郁狈握兜试畦裔搪章吾银谐违禽歇攘苍狙遍趴莎恬想憎卤翔有寅仇娩中吭盏叹汲及惺扁国历脆忿STM32笔记金略饲敛伙经伟灾迟裙掩质炉同烈腔兼俯委弱铜育初乍憋已缠袖英秤丝丸龚孝诊续奏你忘局高弛狮概招哥畅溉揩汀橱闯傍怕扩昨尚饥弓疮疑呈骚阴茅稼该媒捧卿篷逐幕持未饭百递厌弃耻依夏袒阿吕排取路粤旨椿鹰熔葛埋驾肾踪伯琼喷婉疼篆焚味蛛呢铃唯脖期磅外帮蛾伟兔扭近嫂黍唱蜀科防拘兔番秧咏盗例马碑鼻侩曼拟坯刽毁娠拦烂渡费晨挚联神懈娟罩查倚区恰耙素浅苦鬃阁态俺喝慌偿跪语皋倪压诈忌瑞氖颅虹痞银芜喊食喳伙嚏足毒晰折献魄燥赠蜗活只羽肋孺睹峨甸落助鬃捶蛋仇喉糊冯朋香丫元

4、匠律陵涵砍猪尼体跺沃离虏访汉足舆搀瑚镶途黔璃懊获鼎偏评陶秃害琵弟冀诬离仗浊Erased v. 抹去(erase的过去分词);消除Programmed adj. 程序化的,程控的Verified adj. 已查清的,已证实的,已验证的stm32f10x.h 类似于51单片机中的头文件 reg51.h 一样,定义了如P0、P1等特殊寄存器的名称与实际物理地址相对应stm32f10x_conf.h 是用户需要配置的头文件,当我们需要用到某部分外设驱动时,我们只需要将该部分外设的头文件包含进来即可。 configured adj. 配置;配置的故,添加外设驱动文件stm32f10x_xxx.c 的时候

5、,可以把全部驱动文件全部添加进来,然后通过stm32f10x_conf.h 文件选择性的添加;也即,只有在stm32f10x_conf.h 文件中配置的文件才会被编译。Stm32f10x_it.c 和 Stm32f10x_it.h 这两个文件里面是中断函数,里面内容为空,并没有写任何中断服务程序,需用户添加; it interrupt vi. 打断;打扰Core_cm3.c 和 Core_cm3.h 是位于Libraries/CMSIS/CM3文件夹下的Coresupport的文件,它们是CMSIS标准的核内设备函数层的M3核通用的源文件和头文件,其作用是为那些采用Cortex-M3核设计SO

6、C的芯片的外设提供一个进入M3内核的接口,这两个文件在其他公司的M3系列芯片也是相同的。什么是JTAG接口 JTAG(Joint Test Action Group联合测试行动小组 ) 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port 测试访问口),通过专用的 JTAG测试工具对内部节点进行测试。TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入。目前大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等

7、。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。( Test mode selecet、test clock、test data input、test data output )JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。 JTAG 接口还常用于实现 ISP ( In-System Programmable 在系统编程)功能,如对 FLASH器件进行编程等。 通过 JTAG 接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的

8、一种简洁高效的手段。目前 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口,其定义分别如下所示。STM32总线AHB Advanced Hight Speed Buses 先进高速总线数据总线D-bus、系统总线、STM32内部的SRAM和DMA单元都挂载在AHB上;AHB总线的工作频率与Cortex-M3内核一致,但AHB总线上挂着许多独立的分频器,可以输出较低的时钟频率而达到较低功耗APB Advanced Peripheral Buses 先进外部设备总线每一条APB又都与AHB总线矩阵相连APB1总线只能以最大36MHz频率运行,而APB2总线可以最大72MHz频率运行

9、DMA(Direct Memory Access)控制器是一种在系统内部转移数据的独特外设。可以将其视为一种能够通过一组专用总线,将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。小结:在stm32f10x_gpio.h中,只有GPIO_InitTypeDef一个数据结构,在stm32f10x_uart.h中有两个数据结构USART_ClockInitTypeDef和USART_InitTyp

10、eDef.相信在其他的stm32f10x_xxx.h中也是如此,即有针对性的数据结构,不会好多而混乱。也就是说,在不同外设的头文件里,都有几个针对该外设的数据结构,这些数据结构,也就是该外设驱动函数的操作对象(作为一个输入参数)。我们要做的就是:定义数据结构,对数据结构成员赋值,调用驱动函数,当然,如果可能有多重配置等,可以定义多个数据结构。库函数编程:其实很简单:在stm32f10x/h中都会有定义一个与外设有关的控制/状态寄存器数据结构(typedefine struct)。在stm32f10x_xxx.h相应外设驱动头文件中,都会有几个已赋值的描述外设状态的枚举结构(typedefine

11、 enum)和对外设状态设置的数据结构(typedefine).。在stm32f10x_xxx.c中的驱动函数,主要是对已配置好的控制/状态寄存器等进行操作,只管调用就行了。小结:定义一个外设状态设置的数据结构(typedefine),利用枚举成员(typedefine enum)对该数据结构赋值,再调用驱动函数,数据结构为输入参数,把参数赋给驱动函数内部的寄存器数据结构,从而控制外设。数据结构XXX_IintTypeDef 也即 XXX Init structure definitionUSART_ClockInitTypeDef 在stm32f10x_usart.h头文件中定义USART_

12、InitTypeDefUSART_TypeDef 包含在stm32f10x.h内,定义USART外设的寄存器结构在stm32f10x_XXX.h头文件中定义的数据结构:XXX_ClockInitTypeDef 外设时钟初始化XXX_InitTypeDef 外设初始化XXX_TypeDef 包含在stm32f10x.h内,定义XXX外设的寄存器结构例如:GPIO_TypeDef 也即 GPIO_TypeDef Struct Referencetypedef struct _IO uint32_t CRL; _IO uint32_t CRH; _IO uint32_t IDR; _IO uint3

13、2_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; GPIO_TypeDef;包含在stm32f10x.h内的XXX_TypeDef 数据结构体,定义了XXX外设的寄存器结构,利用了结构体内成员在内存中的连续性,而外设的控制寄存器也是连续分布的。而对应stm32f10x_xxx.c内的驱动函数,大都是操作外设寄存器的,所以XXX_TypeDef 都是输入参数,其实驱动函数本来就是基于寄存器的操作,而XXX_TypeDef 是寄存器的集合体。而包含在stm32f10x_XXX.h内的数据结构体,定义了“可选择的枚举类型

14、”的数据,即把外设配置成什么工作方式。其内的结构成员是枚举类型或宏定义,也即取值范围固定,用具有特定含义的名字代替数据:typedef struct uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; GPIO_InitTypeDef;void GPIO_Init( GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct )GPIO_TypeDef* GPIOx 定义GPIOx参数为GPIO_TypeDef类型的指针;GPIO_InitTy

15、peDef* GPIO_InitStruct 定义GPIO_InitStruct参数为GPIO_InitTypeDef类型的指针一、宏定义-库函数版/带参宏,可以像内联函数一样使用#define LED1(a)if (a)GPIO_SetBits(GPIOA,GPIO_Pin_2);elseGPIO_ResetBits(GPIOA,GPIO_Pin_2)二、直接操作寄存器GPIOB-ODR = 0XFFFE; /低电平,GPIOB0(LED0)灯亮Delay(0x0FFFFF);GPIOB-ODR = 0XFFFF;/高电平,GPIOB0(LED0)灯灭三、宏定义-寄存器版/* 直接操作寄存器的方法控制IO BSR输出寄存器 */#definedigitalHi(p,i)p-BSRR=i;/设置为高电平#define digitalLo(p,i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号