燕山大学里仁学院本科毕业设计(论文)
复用功能前必须对端口位配置寄存器编程:
对于复用的输入功能,端口必须配置成输入浮空,且输入引脚必须由外部驱动。
对于复用输出功能,端口必须配置成复用功能输出模式。
对于双向复用模式,端口必须配置复用功能输出。这时,输入驱动器被配置成浮空输入模式。为了使不同器件封装的外设IO功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应位的寄存器来完成。这时,复用功能就不再映射到它们原始引脚上了。
当IO配置为输入使:输出缓冲器被禁止。施密特触发输入被激活。根据输入配置的不同,弱上拉和下拉电阻被连接。出现在IO脚上的数据在每个APB2时钟被采样到输入数据寄存器。对输入数据寄存器的读访问可得到IO状态。
当IO配置为输出时:输出缓冲器被激活。施密特触发输入被激活。弱上拉和下拉电阻被禁止。出现在IO脚上的数据在每个APB2时钟被采样到输入数据寄存器。开漏模式时,对输入数据的读访问可得到IO状态。在推挽模式时,对输出数据寄存器的读访问得到最后一次写的值。
当IO端口被配置为复用功能时:在开漏和推挽模式配置中,输出缓冲器被打开。内置外设的信号驱动输出缓冲器。施密特触发输入被激活。弱上拉和下拉电阻被禁止在每个APB2时钟周期,出现在IO脚上的数据被采样到输入数据寄存器。开漏模式时,读输入数据寄存器可得到最后一次写的值。在推挽模式时,读输出数据寄存器时可得到最后一次写的值[13]。
2.4.7 中断和事件
NVIC(嵌套中断向量控制器)和处理器核的接口紧密相连,可以实现低延的中断处理和高效地处理晚到的中断。NVIC特性:16个可编程的优先级(使用了4位中断优先级)。低延迟的异常和处理中断。
要产生中断,必须先配置好使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写1以允许中断请求。在外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随
14
第2章 智能家居系统总体结构的设计
之置1.在挂起寄存器的对应位写1将清除该中断请求。如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置2个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求。当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置1。通过下面的过程来配置20个线路作为中断源:配置20个中断线的屏蔽位(EXTI_IMR),配置所选中断线的触发选择位(EXTI_RTSR/EXTI_FTSR)。
硬件事件时可以通过下面的过程,可以配置20个线路作为事件源:配置20个事件线的屏蔽位(EXTI_EMR),配置事件线的触发选择位(EXTI_RTSR/EXTI_FTSR)。
软件中断/事件的20个线路可以被配置成中断/事件线。下面是产生软件中断的过程:配置20个中断/事件线屏蔽位,设置软件中断寄存器的请求位(EXTI_SWIER) [13]。
2.4.8 模拟/数字转换(ADC)
12位ADC是一种逐次逼近型模拟数字转换器。它最多18个通道,可测量16个外部和2个内部信号源。各通道的AD转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐的方式存储在16位数据寄存器中。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。ADC主要有一下特性:12位分辨率,转换结束、注入转换结束和发生模拟看门狗事件时产生中断,单次和连续转换模式,自校准,带内嵌数据一致性的数据对齐,采样间隔可以按通道分别编程,规则转换和注入转换均有外部触发选项,间断模式,双重模式,ADC供电要求:2.4V到3.6V。
ADC有16个多路通道,把转换组织分为两组:规则组和注入组。在任意多个通道上一任意顺序进行的一系列构成转换。例如,可以如下顺序完成通道3、通道8、通道2等。
规则组有多大16个转换组成。规则通道和他们的转换顺序在ADC_SQRX寄存器中选择,规则组中的转换总数写入ADC_SQR1寄存器的低4位。
注入组有最多4个转换组成。注入通道和它的转换顺序在ADC_JSQR
15
燕山大学里仁学院本科毕业设计(论文)
寄存器中选择。注入组里的转换数目写入ADC_JSQR寄存器的低2位。
ADC有一个内置自校准模式。校准可减小因内部电容的变化而造成的准精度误差。在校准期间,在每个电容上都会计算出一个误差修正码,这个码用于消除在随后的转换中的误差。通过设置寄存器的CAL位启动校准,CAL位被硬件复位,可以开始正常转换[13]。
ADC使用若干个ADC时钟周期对输入电压采样,采样周期数据可以通过ADC_SMPR1和ADC_SMPR2位的低三位更改。转换时间计算如下: T=采样时间+12.5个周期 (2-1)
例如,当ADC的采样时钟是14MHz的时候,采样时间为1.5个周期
T=1.5+12.5=14周期=1us (2-2)
2.4.9 定时器
通用定时器是一个可编程预分频器驱动的16位自动装载计数器构成。它可以测量输入信号的脉冲长度或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒之间调整。通用定时器有以下几个功能:16位向上、向下、向上/向下自动装载计数器。16位可编程预分频器,分频系数在1——65536之间任意改变。4个独立通道:输入捕获,输出比较,PWM生成,单脉冲模式输出。
如下事件发生时产生中断:更新,计数器向上溢出/向下溢出,计数器初始化。触发事件(计数器停止、启动、初始化或由内部/外部触发计数)。
可编程通用定时器的主要部分是一个16位计数器和相关的自动装载寄存器。这个计数器可以向上、向下或者向上向下双向计数。内部计数的时钟由分频器分频得到。计数器、自动装载寄存器和预分频器可以由软件读写。时基单元包括: 计数寄存器、预分频寄存器、自动载寄存器。自动转载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在控制寄存器1中断自动装载预装载使能位的设置,预装载寄存器的内容被立即或在每次的更新事件时传送到影子寄存器。当计数器达到溢出条件并当控制寄存器1中的UDIS位等于0时产生更新事件。
16
第2章 智能家居系统总体结构的设计
预分频器可以将计数器的时钟频率按1到65536之间任意值分频。它是一个16位寄存器控制的16位的计数器。这个控制寄存器带有缓冲器,它可以在工作时被修改,新的分频器参数在下一次更新事件到来时被采用。
在向上计数模式中,计数器从0计数到自动加载值,然后从0开始计数并且产生一个计数器溢出事件。在向下模式中,计数器从自动装入的值开始向下计数到0,然后从自动装入的值开始重新开始并且产生一个向下溢出事件。在中央对齐模式,计数器从0开始计数到自动加载的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件,然后再从0开始重新计数,计数器的时钟可以由内部时钟提供或者由外部引脚输入[13]。
2.5 本章小结
本章对整个智能家居系统的功能和总体结构做了一个就具体的表述,其中功能是实现家庭照明系统的控制以及对家居内部一氧化碳的监测。总体构架包括用户管理系统、控制系统、传感器模块的无线网络。详细介绍了控制系统所用的嵌入式微处理器芯片STM32,包括STM32的内核介绍、中断管理、系统的滴答定时器、电源控制、时钟、通用和复用功能IO、中断和事件、模拟/数字转换(ADC)、定时器。
17
燕山大学里仁学院本科毕业设计(论文)
18