




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录Stm32学习笔记C语言基础部分2Stm32学习笔记GPIO部分4Stm32学习笔记RCC部分6Stm32学习笔记AD部分7Stm32学习笔记CAN部分9Stm32学习笔记TIM部分9Stm32学习笔记USART部分12Stm32学习笔记超声波测距部分14Stm32学习笔记程序调试部分21Stm32学习笔记C语言基础部分1、C语言运算符优先级 详细列表优先级运算符名称或含义使用形式结合方向说明1数组下标数组名常量表达式左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名-成员选择(指针)对象指针-成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式+自增运算符+变量名/变量名+单目运算符-自减运算符-变量名/变量名-单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符按位取反运算符表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表达式*表达式双目运算符%余数(取模)整型表达式/整型表达式双目运算符4+加表达式+表达式左到右双目运算符-减表达式-表达式双目运算符5左移变量右移变量表达式双目运算符6大于表达式表达式左到右双目运算符=大于等于表达式=表达式双目运算符小于表达式表达式双目运算符=小于等于表达式=表达式双目运算符7=等于表达式=表达式左到右双目运算符!=不等于表达式!= 表达式双目运算符8&按位与表达式&表达式左到右双目运算符9按位异或表达式表达式左到右双目运算符10|按位或表达式|表达式左到右双目运算符11&逻辑与表达式&表达式左到右双目运算符12|逻辑或表达式|表达式左到右双目运算符13?:条件运算符表达式1? 表达式2: 表达式3右到左三目运算符14=赋值运算符变量=表达式右到左/=除后赋值变量/=表达式*=乘后赋值变量*=表达式%=取模后赋值变量%=表达式+=加后赋值变量+=表达式-=减后赋值变量-=表达式=左移后赋值变量=右移后赋值变量=表达式&=按位与后赋值变量&=表达式=按位异或后赋值变量=表达式|=按位或后赋值变量|=表达式15,逗号运算符表达式,表达式,左到右从左向右顺序运算2、 数组:在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。3、 在语言中,字符常量有以下特点:1) 字符常量只能用单引号括起来,不能用双引号或者是括号2) 字符常量只能是单个字符,不能是字符串。3) 字符可以是字符集中任意字符。但数字被定义为字符之后就不能够参与运算。如5和5 是不同的。5是字符常量,不能参与运算。Stm32学习笔记GPIO部分1、 函数名GPIO_ReadInputDataBit 功能描述 读取指定端口管脚的输入2、 对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_AF_PP 复用推挽输出3、 推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。4、 如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路的负载能力,又提高开关速度。5、 开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).开漏形式的电路有以下几个特点:利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)6、 3. OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。7、 4. 可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。补充:什么是“线与”?:8、 在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑.9、10、 其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。11、 关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:12、 该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。13、14、 浮空输入:对于浮空输入,一直没找到很权威的解释,只好从以下图中去理解了15、 由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。16、 上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。17、 复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)18、 最后总结下使用情况:19、 在STM32中选用IO模式(1) 浮空输入_IN_FLOATING 浮空输入,可以做KEY识别,RX1(2)带上拉输入_IPUIO内部上拉电阻输入(3)带下拉输入_IPD IO内部下拉电阻输入(4) 模拟输入_AIN 应用ADC模拟输入,或者低功耗下省电(5)开漏输出_OUT_OD IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能(6)推挽输出_OUT_PP IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的(7)复用功能的推挽输出_AF_PP 片内外设功能(I2C的SCL,SDA)(8)复用功能的开漏输出_AF_OD片内外设功能(TX1,MOSI,MISO.SCK.SS)20、 STM32设置实例:(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD; Stm32学习笔记RCC部分1、 RCC有多种用途,包括时钟设置,外设复位和时钟管理。2、 RTC时钟:系统时钟:简单的说,就是芯片系统内部的时钟,程序运行的速度是由它来决定的。RTC:实时时钟, 如果供电,它会按照自己的精确等级运行的,主要用来做日期时间的显示用。3、 时钟树4、配置时钟树的方法:(1)定义一个 定义一个 定义一个 ErrorStatu 类型的变量 HSEStartUpStatus (2)将时钟树复位至默认设置 (3)开启 HSE 晶振;(4)等待 HSE 晶振起 振稳定,并将起结果保存HSEStartUpStatus 变量中;(5)判断 HSE 晶振是否起成功(6)设置 HCLKHCLK 时钟为时钟为 SYSCL的 分频(7)设置PLCK2 时钟为 时钟为SYSCLK的 分频; (8)设置PLCK1 时钟为 时钟为SYSCLK的 分频; Stm32学习笔记AD部分1、 采样保持器:计算机系统模拟量输入通道中的一种模拟量存储装置。它是连接采样器和模数转换器的中间环节。采样器是一种开关电路或装置,它在固定时间点上取出被处理信号的值。采样保持器则把这个信号值放大后存储起来,保持一段时间,以供模数转换器转换,直到下一个采样时间再取出一个模拟信号值来代替原来的值。在模数转换器工作期间采样保持器一直保持着转换开始时的输入值,因而能抑制由放大器干扰带来的转换噪声,降低模数转换器的孔径时间,提高模数转换器的精确度和消除转换时间的不准确性。一般生产过程控制计算机的模拟量输入可能是每秒几十点、几百点,对于大型系统甚至上千点,往往需要高速采样(如500010000点秒)。为使这些模拟量信号逐个地送到模数转换器,而不至降低被测信号的真实性,必须采用采样保持器。在低速系统中一般可以省略这种装置。 原理采样保持电路由模拟开关、存储元件和缓冲放大器A组成。在采样时刻,加到模拟开关上的数字信号为低电平,此时模拟开关被接通,使存储元件(通常是电容器)两端的电压UB随被采样信号UA变化。当采样间隔终止时,D变为高电平,模拟开关断开,UB则保持在断开瞬间的值不变。缓冲放大器的作用是放大采样信号,它在电路中的连接方式有两种基本类型:一种是将信号先放大再存储,另一是先存储再放大。对理想的采样保持电路,要求开关没有偏移并能随控制信号快速动作,断开的阻抗要无限大,同时还要求存储元件的电压能无延迟地跟踪模拟信号的电压,并可在任意长的时间内保持数值不变。2、 采样频率 英文名称:sampling frequency 定义:在模数转换器中采样时间间隔的倒数。3、 Ad转换器的分类4、 Ad转换器的技术指标:转换时间和转换速率 分辨率 量化误差 转换精度5、 Ad位数的选择6、 Ad转换速率的确定7、 工作电压和基准电压8、 Ad的工作模式:(1)独立模式:分为单通道单次转换模式、多通道(扫描)单次转换模式、单通道连续转换模式、多通道连续转换模式、注入转换模式单次转换模式下,ADC只执行一次转换。在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。扫描模式,此模式用来扫描一组模拟通道。注入转换模式:当触发方式为软件出发或者外部出发方式时,可以使用此模式。(2) 双adc模式:分为同时为规则模式、快速交替模式、慢速交替模式、交替触发模式、混合同步注入及+交替模式9、 规则通道和注入通道的区别: STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。 有2种划分转换组的方式:规则通道组和注入通道组。通常规则通道组中可以安排最多16个通道,而注入通道组可以安排最多4个通道。 在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。一个不太恰当的比喻是:规则通道组的转换好比是程序的正常执行,而注入通道组的转换则好比是程序正常执行之外的一个中断处理程序。 从系统设计上,测量并显示室内温度的过程中断了测量并显示室外温度的过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,系统运行中不必再变更循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可以设想一下,如果没有规则组和注入组的划分,当你按下按钮后,需要从新配置AD循环扫描的通道,然后在施放按钮后需再次配置AD循环扫描的通道。10、 SRAMSRAM是英文Static RAM的缩写,即静态随机存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。11、DMA原理:DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。Stm32学习笔记CAN部分1、bxCAN主要特点支持CAN协议2.0A和2.0B主动模式波特率最高可达1兆位/秒支持时间触发通信功能发送3个发送邮箱,发送报文的优先级特性可软件配置,发送SOF时刻的时间戳接收3级深度的2个接收FIFO,14个位宽可变的过滤器组标识符列表FIFO溢出处理方式可配置,记录接收SOF时刻的时间戳,时间触发通信模式,禁止自动重传模式,16位自由运行定时器,可在最后2个数据字节发送时间戳管理中断可屏蔽,邮箱占用单独1块地址空间,便于提高软件效率2、Stm32学习笔记TIM部分1、通用定时器(TIM)通用定时器是一个通过可编程预分频器驱动的16 位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入采集)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。定时器是完全独立的,而且没有互相共享任何资源。2、 SCB是MDK库文件里面定义的一个结构体,subsystem control block子系统管理模块3、TIMER主要是由三部分组成:时基单元、输入捕获、输出比较,还有两种模式控制功能:从模式控制和主模式控制。4、定时器的计数模式: 向上计数模式,向下计数模式,在向下模式中,计数器从自动装入的值(TIMx_ARR计数器的值)开始向下计数到0,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。每次计数器溢出时可以产生更新事件,在TIMx_EGR寄存器中设置UG位(通过软件方式或者使用从模式控制器)也同样可以产生一个更新事件。设置TIMx_CR1寄存器的UDIS位可以禁止UEV事件。这样可以避免向预装载寄存器中写入新值时更新影子寄存器。因此UDIS位被清为0之前不会产生更新事件。然而,计数器仍会从当前自动加载值重新开始计数,同时预分频器的计数器重新从0开始(但预分频器的速率不能被修改)。此外,如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生一个更新事件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。当发生更新事件时,所有的寄存器都被更新,并且(根据URS位的设置)更新标志位(TIMx_SR寄存器中的UIF位)也被设置。 中央对齐模式,5、时基单元包含: 计数器寄存器(TIMx_CNT) 预分频器寄存器 (TIMx_PSC),预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。自动装载寄存器 (TIMx_ARR),自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMX_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。6. 可设置时长的定时器的方法设置计数器的时钟频率。设置计数器的计数初值。打开计数器开始计数。开启中断。执行中断服务程序7、 通用定时器的时钟来源: 内部时钟(CK_INT) 外部时钟模式1:外部输入脚(TIx) 外部时钟模式2:外部触发输入(ETR) 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。8、 计数器时钟频率的计算方法 9、 从库函数角度设置定时时间 (1)Timx时钟使能:通用定时器挂在APB1下,通过APB1总线的使能函数来使能,函数为RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,enable)(2)初始化定时器参数:设置自动重装值、分频系数和计数方式等,函数原形为:TIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)功能描述:根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位,输入参数1,TIMx:x可以是2,3或者4,来选择TIM外设;输入参数2TIM-TimeBase_InitStruct:指向结构TIM_TimeBaseInitTypeDef的指针,包含了TIMx时间基数单位的配置信息。TIM_TimeBaseInitTypeDef定义于文件“stm32f10x_tim.h”: typedef struct u16 TIM_Period; u16 TIM_Prescaler; u8 TIM_ClockDivision; u16 TIM_CounterMode; TIM_TimeBaseInitTypeDef; TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间。TIM_Prescaler TIM_Prescaler设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间。TIM_ClockDivision TIM_ClockDivision设置了时钟分割 (3)设置timx-dier允许更新中断:函数原形void TIM_ITConfig(TIM_TypeDef* TIMx, u16 TIM_IT, FunctionalState NewState)功能描述,使能或者失能指定的TIM中断,输入参数1TIMx:x可以是2,3或者4,来选择TIM外设;输入参数2,TIM_IT:待使能或者失能的TIM中断源,输入参数3NewState:TIMx中断的新状态,这个参数可以取:ENABLE或者DISABLE输入参数TIM_IT使能或者失能TIM的中断。可以取下表的一个或者多个取值的组合作为该参数的值。TIM_IT_Update TIM中断源,TIM_IT_CC1 TIM捕获/比较1中断源,TIM_IT_CC2 TIM捕获/比较2中断源,TIM_IT_CC3,TIM捕获/比较3中断源TIM_IT_CC4 TIM捕获/比较4中断源,TIM_IT_Trigger TIM触发中断源 (4) 设置中断优先级,在nvic的寄存器中设置 (5)使能timx (6)编写中断服务函数10、TIM_ClearFlag 函数原形void TIM_ClearFlag(TIM_TypeDef* TIMx, u32 TIM_FLAG)功能描述,清除TIMx的待处理标志位,输入参数1,TIMx:x可以是2,3或者4,来选择TIM外设,输入参数2,TIM_FLAG:待清除的TIM标志位TIM_FLAG值:TIM_FLAG_Update TIM更新标志位TIM_FLAG_CC1 TIM捕获/比较1标志位TIM_FLAG_CC2 TIM捕获/比较2标志位TIM_FLAG_CC3 TIM捕获/比较3标志位TIM_FLAG_CC4 TIM捕获/比较4标志位TIM_FLAG_Trigger TIM触发标志位TIM_FLAG_CC1OF TIM捕获/比较1溢出标志位TIM_FLAG_CC2OF TIM捕获/比较2溢出标志位TIM_FLAG_CC3OF TIM捕获/比较3溢出标志位TIM_FLAG_CC4OF TIM捕获/比较4溢出标志位11、 函数名:TIM_GetCounter函数原形:u16 TIM_GetCounter(TIM_TypeDef* TIMx)功能描述:获得TIMx计数器的值输入参数:TIMx:x可以是2,3或者4,来选择TIM外设12、函数名TIM_ GetITStatus函数原形TIM_GetITStatus(TIM_TypeDef* TIMx, u16 TIM_IT)功能描述检查指定的TIM中断发生与否输入参数1TIMx:x可以是2,3或者4,来选择TIM外设输入参数2TIM_IT:待检查的TIM中断源13、函数名TIM_ITConfig函数原形void TIM_ITConfig(TIM_TypeDef* TIMx, u16 TIM_IT, FunctionalState NewState)功能描述使能或者失能指定的TIM中断输入参数1TIMx:x可以是2,3或者4,来选择TIM外设输入参数2TIM_IT:待使能或者失能的TIM中断源输入参数3NewState:TIMx中断的新状态这个参数可以取:ENABLE或者DISABLETIM_ITTIM_IT_UpdateTIM中断源TIM_IT_CC1TIM捕获/比较1中断源TIM_IT_CC2TIM捕获/比较2中断源TIM_IT_CC3TIM捕获/比较3中断源TIM_IT_CC4TIM捕获/比较4中断源TIM_IT_TriggerTIM触发中断源14、函数名TIM_ ClearITPendingBit函数原形void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, u16 TIM_IT)功能描述清除TIMx的中断待处理位输入参数1TIMx:x可以是2,3或者4,来选择TIM外设输入参数2TIM_IT:待检查的TIM中断待处理位15、STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。Stm32学习笔记USART部分1、 简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(iMAXTIME).编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2、 常见的头文件#include /定义输入输出函数 #include /定义杂项函数及内存分配函数 #include /字符串处理 #include /定义关于时间的函数 #include /定义输入输出函数 #include /字符处理 #include /中断优先级分组#include数学函数库包含一些数学计算的公式3、UART:universal asynchronous receiver and transmitter通用异步收发器USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器都是指单片机的串口通讯,工作方式不一样而已!4、USART主要特性 全双工的,异步通信 NRZ标准格式 分数波特率发生器系统 发送和接收共用的可编程波特率,最高达 4.5Mbits/s 可编程数据字长度(8位或9位) 可配置的停止位-支持1或2个停止位 可配置的使用DMA的多缓冲器通信 在 SRAM里利用集中式 DMA缓冲接收/发送字节 单独的发送器和接收器使能位 检测标志 接收缓冲器满 发送缓冲器空 传输结束标志 校验控制 发送校验位 对接收数据进行校验5、 异步串行通信协议需要定义以下5个内容:起始位、数据位、奇偶校捡位、停止位、波特率设置6、 应用场合:芯片之间近距离,与PC机之间的通信和模块之间远距离通信7、 串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。8、 PC的串口就是COM口,TxD和RxD和GND就是包括在COM口中。接口通过三个引脚与其他设备连接在一起(见图236)。任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。9、 函数USART_SendData,,函数原形void USART_SendData(USART_TypeDef* USARTx, u8 Data),功能描述通过外设USARTx发送单个数据,USARTx:x可以是1,2或者3,来选择USART外设,输入参数2,Data: 待发送的数据10、 函数USART_ReceiveData,函数原形u8 USART_ReceiveData(USART_TypeDef* USARTx),功能描述,返回USARTx最近接收到的数据输入参数,USARTx:x可以是1,2或者3,来选择USART外设11、USART_GetFlagStatus,函数原形FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG) ,功能描述,检查指定的USART标志位设置与否,输入参数1 USARTx:x可以是1,2或者3,来选择USART外设,输入参数2 ,USART_FLAG:待检查的USART标志位12、 USART_FLAG值USART_FLAG_CTS CTS标志位USART_FLAG_LBD LIN中断检测标志位USART_FLAG_TXE 发送数据寄存器空标志位USART_FLAG_TC 发送完成标志位USART_FLAG_RXNE 接收数据寄存器非空标志位USART_FLAG_IDLE 空闲总线标志位USART_FLAG_ORE 溢出错误标志位USART_FLAG_NE 噪声错误标志位USART_FLAG_FE 帧错误标志位USART_FLAG_PE 奇偶错误标志位13、 USART_ ClearFlag函数原形void USART_ClearFlag(USART_TypeDef* USARTx, u16 USART_FLAG)功能描述,清除USARTx的待处理标志位,输入参数1,USARTx:x可以是1,2或者3,来选择USART外设,输入参数2,USART_FLAG:待清除的USART标志位。14、 USART_ITConfig,函数名函数原形void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState)功能描述,使能或者失能指定的USART中断,输入参数1,USARTx:x可以是1,2或者3,来选择USART外设,输入参数2,USART_IT:待使能或者失能的USART中断源,输入参数3,NewState:USARTx中断的新状态,这个参数可以取:ENABLE或者DISABLE USART_IT值USART_IT_PE 奇偶错误中断USART_IT_TXE 发送中断USART_IT_TC 传输完成中断USART_IT_RXNE 接收中断USART_IT_IDLE 空闲总线中断USART_IT_LBD LIN中断检测中断USART_IT_CTS CTS中断USART_IT_ERR 错误中断15、 USART1重映像STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的.读到这里相信大家都应该了解了端口重映射的一些概念了16、 串口是需要使用IO口来进行发送和接收的。17函数名USART_ SendData函数原形void USART_SendData(USART_TypeDef* USARTx, u8 Data)功能描述通过外设USARTx发送单个数据输入参数1 USARTx:x可以是1,2或者3,来选择USART外设输入参数2 Data: 待发送的数据Stm32学习笔记超声波测距部分1、 程序目的:使用STM32控制超声波模块并使用USART显示#include stm32f10x.h#include math.h#include stdio.h#include time.hvoid Tim2_Init(void);void GPIO_Configuration(void);void RCC_Configuration(void);void USART_Configuration(void);u16 Sensor_using(void);void delay(void);main() u16 result=0; u8 i; FlagStatus Status; /*system clock init*/ RCC_Configuration(); /*IO init*/ GPIO_Configuration(); /*TIM初始化*/ USART_Configuration(); Tim2_Init(); while(1) u16m;result=Sensor_using(); i=(u8)(result&0xff00)8);/ 输出高八位/while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) = RESET);USART_SendData(USART1,i); i=(u8)result&0x00ff); /输出低八位/while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)= RESET); USART_SendData(USART1,i); for(m=800;m0;m-) delay(); void RCC_Configuration(void) ErrorStatus HSEStartUpStatus; RCC_DeInit(); /时钟控制寄存器全部恢复默认值 RCC_HSEConfig(RCC_HSE_ON);/外部高速时钟源开启(8M晶振) HSEStartUpStatus = RCC_WaitForHSEStartUp();/等待外部时钟就绪 if(HSEStartUpStatus = SUCCESS)/如果时钟启动成功 RCC_HCLKConfig(RCC_SYSCLK_Div1); /定义AHB设备时钟为系统时钟1分频 RCC_PCLK2Config(RCC_HCLK_Div1);/定义APB2设备时钟为HCLK时钟1分频 RCC_PCLK1Config(RCC_HCLK_Div2);/定义APB1设备时钟为HCLK时钟2分频 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/配置PLL时钟为外部高速时钟的9倍频,8MHz * 9 = 72 MHz RCC_PLLCmd(ENABLE);/使能PLL时钟 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET)/等待PLL时钟设置完成准备就绪 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /使用PLL时钟作为系统时钟源 while(RCC_GetSYSCLKSource() != 0x08)/返回系统所用时钟源确认为外部高速晶振,8M晶振。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE , ENABLE);void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB, ENABLE); /*Echo pin define*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;/GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOE, &GPIO_InitStructure); /*Trigle pin define*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure);void USART_Configuration(void) /串口配置程序 USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate =115200; /设置串口波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b; /设置数据长度为8位 USART_InitStructure.USART_StopBits = USART_StopBits_1; /设置一个停止位 USART_InitStructure.USART_Parity = USART_Parity_No ; /无校验位 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /禁止硬件流控制模式 USART_InitStructure.USART_Mode =USART_Mode_Rx|USART_Mode_Tx; /打开串口的发送功能 USART_Init(USART1, &USART_InitStructure); /用以上参数初始化USART1 USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); /打开接收中断 USART_Cmd(USART1, ENABLE); /打开串口1 void Tim2_Init(void) TIM_TimeBaseInitType
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 本章回顾说课稿-2025-2026学年初中信息技术西交大版2014七年级上册-西交大版2014
- 蔬菜农技科普知识培训内容课件
- 川教版七年级信息技术上册说课稿:第六课 初步使用计算机
- 蔬菜产品知识培训课件
- 2025年中考化学试题分类汇编:元素(第1期)解析版
- 第二章 细胞怎样构成生物体教学设计-2025-2026学年初中生物学人教版五四学制六年级上册-人教版五四制
- Unit 2 I'm going to study computer science.教学设计-2025-2026学年初中英语鲁教版五四学制2012七年级下册-鲁教版五四学制2012
- 2025年全国低压电工作业证理论考试题库(含答案)
- 2025年汽车修理工(高级)证考试复习题库【附答案】
- 2025年高考生物试题分类汇编细胞的物质基础和结构基础(解析版)
- 金属冶炼中的营运成本控制
- 苏式彩画古建181班授课郭佩锦37课件讲解
- 2025-2030年中国功率器件市场发展趋势规划研究报告
- 2025农村租地合同农村租地合同范本
- 餐饮行业消防安全预案
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 2024考研 政治 思维导图(马原)
- 医疗设备定期检修方案
- 2023中电信数智科技有限公司白皮书
- 办公楼物业管理服务(技术方案)
- 私募股权投资基金的会计处理全解析
评论
0/150
提交评论