版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
14ARM应用开发14ARM应用开发(1)GPIO应用(2)
定时器与PWM应用(3)
按键与蜂鸣器(4)
数码管显示(5)
中断系统应用(6)
串行通信(7)SPI通信应用(8)
模数转换应用二传输网络介绍GPIO概述及管脚命名GPIO内部结构GPIO工作模式GPIO输出速度GPIO复用功能重映射GPIO控制寄存器及配置实例基于寄存器开发方式的LED灯闪烁工程GPIO应用主要内容1GPIO概述及管脚命名GeneralPurposeInput/Output-通用输入输出
GPIO实现处理器与外部的数字交换。GPIO通常是学习开发嵌入式应用的第一步。通过GPIO,可实现对外部设备(如LED和按键等)最简单、最直观的监控。处理器没有足够的I/O引脚或片内存储器时,GPIO还可用于串行和并行通信、存储器扩展等。1GPIO概述及管脚命名STM32F103最多可以提供112个多功能双向I/O引脚。这些I/O引脚依次分布在不同的端口中。端口号:端口号通常以大写字母命名,从A开始,依次类推。例如,GPIOA、GPIOB、GPIOC、…GPIOG等。引脚号:每个端口有16个I/O引脚,分别命名为0-15。例如,STM32F103RCT6的GPIOA端口有16个引脚,分别为PA0、PA1、PA2、PA3、…、PA14和PA15。
2GPIO内部结构输入模式输入浮空(GPIO_Mode_IN_FLOATING)输入上拉(GPIO_Mode_IPU)输入下拉(GPIO_Mode_IPD)模拟输入(GPIO_Mode_AIN)输出模式开漏输出(GPIO_Mode_Out_OD)开漏复用功能(GPIO_Mode_AF_OD)推挽式输出(GPIO_Mode_Out_PP)推挽式复用功能(GPIO_Mode_AF_PP)3GPIO工作模式四种输入四种输出3.1GPIO的工作模式—输入浮空模式3.2GPIO的工作模式—输入上拉模式3.3GPIO的工作模式—输入下拉模式3.4GPIO的工作模式—模拟输入模式3.5GPIO的工作模式—开漏输出模式3.6GPIO的工作模式—开漏复用输出模式3.7GPIO的工作模式—推挽输出模式3.8GPIO的工作模式—推挽复用输出模式4GPIO输出速度STM32的I/O引脚内部有多个响应速度(2MHz,10MHz,50MHz)不同的驱动电路,用户可以根据自己的需要选择合适的驱动电路。一般推荐I/O引脚的输出速度是其输出信号速度的5-10倍。对于连接LED、数码管和蜂鸣器等外部设备,一般设置为2MHz。对于串口来说,这样只需要用2MHz的GPIO的引脚速度就可以了。
对于I2C接口,可以选用10MHz的GPIO引脚速度。对于SPI接口,需要选择呢50MHz的GPIO引脚速度
对于用作FSMC复用功能连接存储器的输出引脚,一般设置为50MHz的I/O引脚速度。5复用功能重映射把有些外设的“复用功能”从其默认引脚重新定位到其他引脚上,实例如下:6GPIO控制寄存器31302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW
1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=0…7)(Portxconfigurationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):
00:模拟输入模式
01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式
11:保留在输出模式(MODE[1:0]>00):
00:通用推挽输出模式01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:8,5:41:0MODEy[1:0]:端口x的模式位(y=0…7)(Portxmodebits)软件通过这些位配置相应的I/O端口。
00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz
(1)
端口配置低寄存器(GPIOx_CRL)(2)
端口配置高寄存器(GPIOx_CRH)31302928272625242322212019181716CNF15[1:0]MOD15[1:0]CNF14[1:0]MOD14[1:0]CNF13[1:0]MOD13[1:0]CNF12[1:0]MOD12[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW
1514131211109876543210CNF11[1:0]MOD11[1:0]CNF10[1:0]MOD10[1:0]CNF9[1:0]MOD9[1:0]CNF8[1:0]MOD8[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=8…15)(Portxconfigurationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):
00:模拟输入模式
01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式
11:保留在输出模式(MODE[1:0]>00):
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:8,5:41:0MODEy[1:0]:端口x的模式位(y=8…15)(Portxmodebits)软件通过这些位配置相应的I/O端口。
00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz
(3)
端口输入数据寄存器(GPIOx_IDR)位31:16保留,始终读为0。位15:0IDRy[15:0]:端口输入数据(y=0…15)(Portinputdata)这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。(4)端口输出数据寄存器(GPIOx_ODR)位31:16保留,始终读为0。位15:0ODRy[15:0]:端口输出数据(y=0…15)(Portoutputdata)这些位可读可写并只能以字(16位)的形式操作。
注:对GPIOx_BSRR(x=A…E),可以分别地对各个ODR位进行独立的设置/清除。(5)端口位设置/清除寄存器(GPIOx_BSRR)位31:16BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:清除对应的ODRy位为0注:如果同时设置了BSy和BRy的对应位,BSy位起作用。位15:0BSy:设置端口x的位y(y=0…15)(PortxSetbity)这些位只能写入并只能以字(16位)的形式操作。
0:对对应的ODRy位不产生影响
1:设置对应的ODRy位为1(6)端口位清除寄存器(GPIOx_BRR)位31:16保留。位15:0BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。0:对对应的ODRy位不产生影响
1:清除对应的ODRy位为0(7)
端口配置锁定寄存器(GPIOx_LCKR)位31:17保留。位16LCKK:锁键
(Lockkey)该位可随时读出,它只可通过锁键写入序列修改。0:端口配置锁键位激活1:端口配置锁键位被激活,位15:0LCKy:端口x的锁位y(y=0…15)(PortxLockbity)这些位可读可写但只能在LCKK位为0时写入。0:不锁定端口的配置1:锁定端口的配置(8)APB2外设时钟使能寄存器(RCC_APB2ENR)位31:16保留,始终读为0。位15ADC3EN:ADC3接口时钟使能
(ADC3interfaceclockenable)位14USART1EN:USART1时钟使能
(USART1clockenable)位13TIM8EN:TIM8定时器时钟使能
(TIM8Timerclockenable)位12SPI1EN:SPI1时钟使能
(SPI1clockenable)位11TIM1EN:TIM1定时器时钟使能
(TIM1Timerclockenable)位10ADC2EN:ADC2接口时钟使能
(ADC2interfaceclockenable)位9ADC1EN:ADC1接口时钟使能
(ADC1interfaceclockenable)位8IOPGEN:IO端口G时钟使能
(I/OportGclockenable)位7IOPFEN:IO端口F时钟使能
(I/OportFclockenable)位6IOPEEN:IO端口E时钟使能
(I/OportEclockenable)位5IOPDEN:IO端口D时钟使能
(I/OportDclockenable)位4IOPCEN:IO端口C时钟使能
(I/OportCclockenable)位3IOPBEN:IO端口B时钟使能
(I/OportBclockenable)位2OPAEN:IO端口A时钟使能
(I/OportAclockenable)位1保留,始终读为0。位0AFIOEN:辅助功能IO时钟使能
(AlternatefunctionI/Oclockenable)7GPIO寄存器配置实例
如果需要实现8个LED闪烁程序,则需要对相应的寄存器进行配置。需要配置的寄存器分别为:(1)端口配置低寄存器(GPIOC_CRL)配置说明:GPIOC_CRL=0x11111111MODEy[1:0]=01:输出模式,最大速度10MHz。CNFy[1:0]=00:通用推挽输出模式(2)端口输出数据寄存器(GPIOC_ODR)(3)端口位设置/清除寄存器(GPIOC_BSRR)(4)APB2外设时钟使能寄存器(RCC_APB2ENR)配置说明:IOPCEN:IO端口C时钟使能(I/OportCclockenable)0:IO端口C时钟关闭;1:IO端口C时钟开启。RCC_APB2ENR=0x000000108库函数版LED灯闪烁工程8.1创建库函数版工程模板8.2LED灯闪烁程序设计LED灯闪烁程序流程图KeilMDK软件编译界面8.2LED灯闪烁程序设计8.2LED灯闪烁程序设计8.2LED灯闪烁程序设计GPIO小结GPIO是STM32F103微控制器最基本、最重要的外设,也是本书讲解的第一个外设。本章首先讲解了GPIO的定义、概述、管脚命名;随后讲解了GPIO工作模式、输出速度、复用功能;紧随其后详细讲解了GPIO相关寄存器,包括寄存器名称、位定义和访问方式等内容;本章最后以LED流水灯为例,给出了寄存器配置方法,并给出了基于寄存器开发方式的LED灯闪烁工程详细实施步骤。14ARM应用开发(1)GPIO应用(2)
定时器与PWM应用(3)
按键与蜂鸣器(4)
数码管显示(5)
中断系统应用(6)
串行通信(7)SPI通信应用(8)
模数转换应用二传输网络介绍STM32F103定时器概述基本定时器通用定时器高级定时器定时器相关库函数定时器秒计时项目实施PWM呼吸灯项目实施定时器/PWM概要1STM32F103定时器概述STM32F103定时器相比于传统的51单片机要完善和复杂得多,它是专为工业控制应用量身定做,具有延时、频率测量、PWM输出、电机控制及编码接口等功能。STM32F103微控制器内部集成了多个可编程定时器,可以分为基本定时器(TIM6和TIM7)、通用定时器(TIM2~TIM5)和高级定时器(TIM1、TIM8)3种类型。从功能上看,基本定时器的功能是通用定时器的子集,而通用定时器的功能又是高级定时器的一个子集,各类定时器功能描述见表:STM32F103定时器功能查询表主要特点基本定时器通用定时器高级定时器内部时钟CK_INT来源APB1分频器APB1分频器APB2分频器预分频器的位数(分频范围)16位(1~65536)16位(1~65536)16位(1~65536)计数器的位数(计数范围)16位(1~65536)16位(1~65536)16位(1~65536)更新中断和DMA√√√计数方向↑↑、↓、↑↓↑、↓、↑↓外部事件计数x√√定时器触发或级联x√√4个独立捕获/比较通道x√√单脉冲输出方式x√√正交编码器输入x√√霍尔传感器输入x√√刹车信号输入xx√带死区的PWM互补输出xx√2.1基本定时器简介2基本定时器STM32F103基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。这2个定时器是互相独立的,不共享任何资源。2.2基本定时器的主要特性TIM6和TIM7定时器的主要功能包括:■
16位自动重装载累加计数器■
16位可编程(可实时修改)预分频器■
触发DAC的同步电路■
在更新事件(计数器溢出)时产生中断/DMA请求基本定时器结构框图2.3基本定时器的功能1.时基单元这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一个预分频器得到。软件可以读写计数器(TIMx_CNT)、自动重装载寄存器(TIMx_ARR)和预分频寄存器(TIMx_PSC),即使计数器运行时也可以操作。2.时钟源从STM32F103基本定时器内部结构图可以看出,基本定时器TIM6和TIM7只有一个时钟源,即内部时钟CK_INT。基本定时器TIM6和TIM7的TIMxCLK来源于APB1预分频器的输出,系统默认情况下,APB1的时钟频率为72MHz。3.预分频器预分频可以以系数介于1至65536之间的任意数值对计数器时钟分频。它是通过一个16位寄存器(TIMx_PSC)的计数实现分频。图9-2预分频系数从1变到2的计数器时序图4.计数模式STM32F103基本定时器只有向上计数工作模式,其工作过程如图所示,其中↑表示产生溢出事件。基本定时器工作时,脉冲计数器TIMx_CNT从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。由此可见,如果使用基本定时器进行延时,延时时间可以由以下公式计算:延时时间=(TIMx_ARR+1)X(TIMx_PSC+1)/TIMxCLK向上计数模式计数器时序图(内部时钟分频系数为1)计数器时序图(内部时钟分频系数为2)2.4基本定时器寄存器STM32F103基本定时器相关寄存器名称如下,可以用半字(16位)或字(32位)的方式操作这些外设寄存器,由于我们是采用库函数方式编程,故不作进一步的探讨。■
TIM6和TIM7控制寄存器1(TIMx_CR1)■
TIM6和TIM7控制寄存器2(TIMx_CR2)■
TIM6和TIM7DMA/中断使能寄存器(TIMx_DIER)■
TIM6和TIM7状态寄存器(TIMx_SR)■
TIM6和TIM7事件产生寄存器(TIMx_EGR)■
TIM6和TIM7计数器(TIMx_CNT)■
TIM6和TIM7预分频器(TIMx_PSC)■
TIM6和TIM7自动重装载寄存器(TIMx_ARR)3通用定时器3.1通用定时器简介通用定时器(TIM2、TIM3、TIM4和TIM5)是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。3.2通用定时器主要功能通用TIMx(TIM2、TIM3、TIM4和TIM5)定时器功能包括:■16位向上、向下、向上/向下自动装载计数器。■16位可编程(可以实时修改)预分频器。■4个独立通道:◆
输入捕获◆
输出比较◆
PWM生成◆
单脉冲模式输出■
使用外部信号控制定时器和定时器互连的同步电路。■
如下事件发生时产生中断/DMA:◆
更新:◆
触发事件◆
输入捕获◆
输出比较■
支持针对定位的增量(正交)编码器和霍尔传感器电路。■
触发输入作为外部时钟或者按周期的电流管理。3.3通用定时器功能描述通用定时器内部结构如图所示,相比于基本定时器其内部结构要复杂多,其中最显著的地方就是增加了4个捕获/比较寄存器TIMx_CCR,这也是通用定时器之所以拥有那么多强大功能的原因。1.时基单元可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。时基单元包含:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)和自动装载寄存器(TIMx_ARR)。2.计数模式(1)向上计数模式工作在向上计数模式下的通用定时器,当自动重装载寄存器TIMx_ARR的值为0x36,内部预分频系数为4(预分频寄存器TIMx_PSC的值为3)的计数器时序图。(2)向下计数模式工作在向下计数模式下,自动重装载寄存器值为0x36,内部预分频系数为2的计数器时序图。(3)向上/向下计数模式向上/向下计数模式又称为中央对齐模式或双向计数模式,其工作过程如图所示,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)−1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。工作在向上/向下计数模式下的通用定时器,当自动重装载寄存器TIMx_ARR的值为0x06,内部预分频系数为1(预分频寄存器TIMx_PSC的值为0)的计数器时序图如图所示。3.时钟选择相比于基本定时器单一的内部时钟源,STM32F103通用定时器的16位计数器的时钟源有多种选择,可由以下时钟源提供。●
内部时钟(CK_INT)●
外部时钟模式1:外部输入捕获引脚(TIx)●
外部时钟模式2:外部触发输入(ETR)●
内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器4.捕获/比较通道每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(包含影子寄存器),包括捕获的输入部分(数字滤波、多路复用和预分频器),和输出部分(比较器和输出控制)。输入部分对相应的TIx输入信号采样,并产生一个滤波后的信号TIxF。然后,一个带极性选择的边缘检测器产生一个信号(TIxFPx),它可以作为从模式控制器的输入触发或者作为捕获控制。该信号通过预分频进入捕获寄存器(ICxPS)。输出部分产生一个中间波形OCxRef(高有效)作为基准,链的末端决定最终输出信号的极性。3.4通用定时器工作模式1输入捕获模式2PWM输入模式3强置输出模式4输出比较模式5PWM模式√5.PWM模式(1)PWM简介PWM是PulseWidthModulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量、通信、功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于PWM技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。(2)PWM实现实现PWM的方法主要有传统的数字电路、微控制器普通I/O模拟和微控制器的PWM直接输出等。■
传统的数字电路方式:用传统的数字电路实现PWM(如555定时器)。■微控制器普通I/O模拟方式:对于微控制器中无PWM输出功能情况(如51单片机),可以通过CPU操控普通I/O口来实现PWM输出。■微控制器的PWM直接输出方式:对于具有PWM输出功能的微控制器,在进行简单的配置后即可在微控制器的指定引脚上输出PWM脉冲。(3)PWM输出模式的工作过程STM32F103微控制器脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号STM32F103微控制器PWM产生原理通用定时器PWM输出模式的工作过程如下:1)若配置脉冲计数器TIMx_CNT为向上计数模式,自动重装载寄存器TIMx_ARR的预设为N,则脉冲计数器TIMx_CNT的当前计数值X在时钟CK_CNT(通常由TIMxCLK经TIMx_PSC分频而得)的驱动下从0开始不断累加计数。2)在脉冲计数器TIMx_CNT随着时钟CK_CNT触发进行累加计数的同时,脉冲计数器TIMx_CNT的当前计数值X与捕获/比较寄存器TIMx_CCR的预设值A进行比较;如果X<A,,输出高电平(或低电平);如果X≥A,输出低电平(或高电平)。3)当脉冲计数器TIMx_CNT的计数值X大于自动重装载寄存器TIMx_ARR的预设值N时,脉冲计数器TIMx_CNT的计数值清零并重新开始计数。向上计数模式PWM输出时序图4高级定时器4.1高级定时器简介高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源,它们可以同步操作。4.2高级定时器特性TIM1和TIM8定时器的功能包括:●16位向上、向下、向上/下自动装载计数器●16位可编程(可以实时修改)预分频器●
多达4个独立通道:●
死区时间可编程的互补输出●
使用外部信号控制定时器和定时器互联的同步电路●
允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器●
刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态●如下事件发生时产生中断/DMA:◆更新◆触发事件◆
输入捕获◆输出比较◆刹车信号输入●支持针对定位的增量(正交)编码器和霍尔传感器电路●触发输入作为外部时钟或者按周期的电流管理4.3高级定时器结构STM32F103高级定时器的内部结构要比通用定时器复杂一些,但其核心仍然与基本定时器、通用定时器相同,是一个由可编程的预分频器驱动的具有自动重装载功能的16位计数器。与通用定时器相比,STM32F103高级定时器主要多了BRK和DTG两个结构,因而具有了死区时间的控制功能。因为高级定时器的特殊功能,在普通应用中一般较少使用,所以不作为本书讨论的重点,如需详细了解可以查阅STM32中文参考手册。5定时器相关库函数5.1函数TIM_DeInit函数名TIM_DeInit函数原形voidTIM_DeInit(TIM_TypeDef*TIMx)功能描述将外设
TIMx寄存器重设为缺省值输入参数TIMx:
x可以是
1~8,来选择
TIM外设输出参数无返回值无先决条件无被调用函数RCC_APB1PeriphClockCmd().5.2函数TIM_TimeBaseInit函数名TIM_TimeBaseInit函数原形voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*
TIM_TimeBaseInitStruct)功能描述根据
TIM_TimeBaseInitStruct中指定的参数初始化
TIMx的时间基数单位输入参数
1TIMx:
x可以是
1~8,来选择
TIM外设输入参数
2TIMTimeBase_InitStruct:指向结构
TIM_TimeBaseInitTypeDef的指针,包含了
TIMx时间基数单位的配置信息输出参数无返回值无先决条件无被调用函数无typedefstruct{uint16_tTIM_Prescaler;uint16_tTIM_CounterMode;uint16_tTIM_Period;uint16_tTIM_ClockDivision;uint8_tTIM_RepetitionCounter;//仅高级定时器TIM1和TIM8有效}TIM_TimeBaseInitTypeDef;TIM_Period:设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间。TIM_Prescaler:设置了用来作为TIMx时钟频率除数的预分频值。它的取值必须在0x0000和0xFFFF之间。TIM_ClockDivision:设置了时钟分割。该参数取值见下表TIM_ClockDivision描述TIM_CKD_DIV1TDTS=Tck_timTIM_CKD_DIV2TDTS=2Tck_timTIM_CKD_DIV4TDTS=4Tck_timTIM_CounterMode:选择了计数器模式。该参数取值见下表。TIM_CounterMode描述TIM_CounterMode_UpTIM向上计数模式TIM_CounterMode_DownTIM向下计数模式TIM_CounterMode_CenterAligned1TIM中央对齐模式
1计数模式TIM_CounterMode_CenterAligned2TIM中央对齐模式
2计数模式TIM_CounterMode_CenterAligned3TIM中央对齐模式
3计数模式5.3函数TIM_OC1Init函数名TIM_OC1Init函数原形voidTIM_OC1Init(TIM_TypeDef*TIMx,TIM_OCInitTypeDef*TIM_OCInitStruct)功能描述根据
TIM_OCInitStruct中指定的参数初始化
TIMx通道
1输入参数1TIMx:x可以是1、2、3、4、5或8,用于选择TIM外设输入参数2TIM_OCInitStruct:指向结构
TIM_OCInitTypeDef的指针,包含了
TIMx时间基数单位的配置信息。输出参数无返回值无先决条件无被调用函数无TIM_OCMode:选择定时器模式TIM_OCMode描述TIM_OCMode_TIMingTIM输出比较时间模式TIM_OCMode_ActiveTIM输出比较主动模式TIM_OCMode_InactiveTIM输出比较非主动模式TIM_OCMode_ToggleTIM输出比较触发模式TIM_OCMode_PWM1TIM脉冲宽度调制模式
1TIM_OCMode_PWM2TIM脉冲宽度调制模式
2TIM_OutputState:选择输出比较状态TIM_OutputState描述TIM_OutputState_Disable失能输出比较状态TIM_OutputState_Enable使能输出比较状态TIM_Pulse:
设置了待装入捕获比较寄存器的脉冲值。它的取值必须在0x0000和0xFFFF之间。TIM_OCPolarity:输出极性。TIM_OCPolarity描述TIM_OCPolarity_HighTIM输出比较极性高TIM_OCPolarity_LowTIM输出比较极性低5.4函数TIM_OC2Init函数名TIM_OC2Init函数原形voidTIM_OC2Init(TIM_TypeDef*TIMx,TIM_OCInitTypeDef*TIM_OCInitStruct)功能描述根据
TIM_OCInitStruct中指定的参数初始化
TIMx通道
1输入参数1TIMx:x可以是1、2、3、4、5或8,用于选择TIM外设输入参数2TIM_OCInitStruct:指向结构
TIM_OCInitTypeDef的指针,包含了
TIMx时间基数单位的配置信息。输出参数无返回值无先决条件无被调用函数无5.5函数TIM_Cmd函数名TIM_Cmd函数原形voidTIM_Cmd(TIM_TypeDef*TIMx,FunctionalStateNewState)功能描述使能或者失能
TIMx外设输入参数
1TIMx:x可以是1~8,用于选择TIM外设输入参数
2NewState:外设
TIMx的新状态
这个参数可以取:
ENABLE或者
DISABLE输出参数无返回值无先决条件无被调用函数无5.6函数TIM_ITConfig函数名TIM_ITConfig函数原形voidTIM_ITConfig(TIM_TypeDef*TIMx,u16TIM_IT,FunctionalStateNewState)功能描述使能或者失能指定的
TIM中断输入参数
1TIMx:
x可以是1~8,来选择
TIM外设输入参数
2TIM_IT:待使能或者失能的
TIM中断源参阅
Section:
TIM_IT查阅更多该参数允许取值范围输入参数
3NewState:
TIMx中断的新状态这个参数可以取:
ENABLE或者
DISABLE输出参数无返回值无先决条件无被调用函数无TIM_IT:输入参数TIM_IT使能或者失能TIM的中断。可以取下表的一个或者多个取值的组合作为该参数的值。TIM_IT描述TIM_IT_UpdateTIM中断源TIM_IT_CC1TIM捕获/比较
1中断源TIM_IT_CC2TIM捕获/比较
2中断源TIM_IT_CC3TIM捕获/比较
3中断源TIM_IT_CC4TIM捕获/比较
4中断源TIM_IT_TriggerTIM触发中断源5.7函数TIM_OC1PreloadConfig函数名TIM_OC1PreloadConfig函数原形voidTIM_OC1PreloadConfig(TIM_TypeDef*TIMx,u16TIM_OCPreload)功能描述使能或者失能
TIMx在
CCR1上的预装载寄存器输入参数
1TIMx:x可以是1、2、3、4、5或8,用于选择TIM外设输入参数
2TIM_OCPreload:输出比较预装载状态参阅
Section:
TIM_OCPreload查阅更多该参数允许取值范围输出参数无返回值无先决条件无被调用函数无TIM_OCPreload:输出比较预装载状态可以使能或者失能如下表TIM_OCPreload描述TIM_OCPreload_EnableTIMx在
CCR1上的预装载寄存器使能TIM_OCPreload_DisableTIMx在
CCR1上的预装载寄存器失能5.8函数TIM_ClearFlag函数名TIM_ClearFlag函数原形voidTIM_ClearFlag(TIM_TypeDef*TIMx,uint16_tTIM_FLAG)功能描述清除
TIMx的待处理标志位输入参数
1TIMx:
x可以是
1~8,来选择
TIM外设输入参数
2TIM_FLAG:待清除的
TIM标志位输出参数无返回值无先决条件无被调用函数无5.9函数TIM_SetCompare1函数名TIM_SetCompare1函数原形voidTIM_SetCompare1(TIM_TypeDef*TIMx,u16Compare1)功能描述设置
TIMx捕获比较
1寄存器值输入参数
1TIMx:x可以是1、2、3、4、5或8,用于选择TIM外设输入参数
2Compare1:捕获比较
1寄存器新值输出参数无返回值无先决条件无被调用函数无6项目实例6.1定时器项目项目分析核心功能是实现LED流水灯精确的一秒的闪烁间隔打开定时器所挂接的时钟利用TIM_TimeBaseInit函数对定时器进行初始化。启动定时器清除中断标志位配置定时器中断设置中断优先级定时器初始化主要步骤包括2项目实施第一步:复制上一章创建工程模板文件夹到桌面,并将文件夹改名为“LEDWater”,将该工程模板编译一下,直到没有错误和警告为止第二步:为工程模板的“ST_Driver”项目组添加定时器源文件“stm32f10x_tim.c”和两个外部中断需要用的源文件,分别为“stm32f10x_exti.c”文件和“misc.c”,文件位于“..\Libraries\STM32F10x_StdPeriph_Driver\src”目录下。第三步:点击“File/New”新建两个文件,将其改名为time.c和time.h并保存到工程模板下的APP文件夹中。并将time.c文件添加到APP项目组下。第四步:在timer.c文件中输入如下源程序,在程序中首先包含time.h头文件,然后创建TIM6Init()定时器初始化程序,其中包括定时器初始化,中断设置,启动定时器和开中断等操作。第五步:在time.h文件中输入如下源程序,其中条件编译格式不变,只要更改一下预定义变量名称即可,需要将我们刚定义函数的声明加到头文件当中。第六步:在public.h文件的中间部分添加#include"time.h"语句,即包含time.h头文件,任何时候程序中需要使用某一源文件中函数,必须先包含其头文件,否则编译是不能通过的。public.h文件的源代码如下所示。第七步:在main.c文件中输入如下源程序,在main函数中,首先对时间变量赋初值,然后分别对数码管管脚、外部中断进行以及定时器初始化,最后应用无限循环结构显示时间,并等待中断发生。第九步:编译工程,如没有错误,则会在output文件夹中生成“工程模板.hex”文件,如有错误则修改源程序直至没有错误为止。第十步:将生成的目标文件通过ISP软件下载到开发板微控制器的FLASH存储器当中,复位运行,检查实验效果。第八步:在Keil-MDK软件操作界面打开“User”项目组下面的“stm32f10x_it.c”文件,并在“stm32f10x_it.c”文件的最下面编写编写中断服务程序6.2PWM项目1.项目分析1开启TIM3时钟以及复用功能时钟,配置PC6和PC7为复用输出。2设置TIM3_CH1和TIM3_CH2重映射到PC6和PC7上。3初始化TIM3,设置TIM3的ARR和PSC。4设置TIM3_CH1和TIM3_CH2的PWM模式,使能TIM3的CH1和CH2输出5使能TIM36修改TIM3_CCR1和TIM3_CCR2来控制占空比2项目实施第一步:复制上一章创建工程模板文件夹到桌面,并将文件夹改名为“PWM”,将该工程模板编译一下,直到没有错误和警告为止。第二步:点击“File/New”新建两个文件,将其改名为PWM.C和PWM.H并保存到工程模板下的APP文件夹中。并将PWM.C文件添加到APP项目组下。第三步:在PWM.C文件中输入如下源程序,在程序中首先包含PWM.H头文件,然后创建TIM3_PWMInit()初始化程序,其中包括打开外设时钟,GPIO初始化、定时器初始化、PWM初始化,管脚重映射,使能预装值寄存器,启动定时器等程序。第四步:在PWM.H文件中输入如下源程序,其中条件编译格式不变,只要更改一下预定义变量名称即可,需要将我们刚定义函数的声明加到头文件当中。第五步:在public.h文件的中间部分添加“#include"PWM.H"”语句,即包含PWM.H头文件。public.h文件的源代码如下所示。第六步:在main.c文件中输入如下源程序,在main函数中,首先定义两个变量,一个是方向变量dir,一个占空比变量Duty,在无限程序中先让占空比增加,当增加到300时,再让占空比减少,并将占空比数值实时更新到TIM3的捕获比较寄存器1和2当中,以实现L7和L8的PWM呼吸灯效果。第七步:编译工程,如没有错误,则会在output文件夹中生成“工程模板.hex”文件,如有错误则修改源程序直至没有错误为止。第八步:将生成的目标文件通过ISP软件下载到开发板微控制器的FLASH存储器当中,复位运行,检查实验效果。14ARM应用开发(1)GPIO应用(2)
定时器与PWM应用(3)
按键与蜂鸣器(4)
数码管显示(5)
中断系统应用(6)
串行通信(7)SPI通信应用(8)
模数转换应用二传输网络介绍GPIO输入库函数GPIO输入控制方式蜂鸣器工作原理及硬件电路按键输入控制蜂鸣器发不同声音项目实施按键与蜂鸣器概要1GPIO输入库函数1.1函数GPIO_ReadInputDataBit函数名GPIO_ReadInputDataBit函数原形U8GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述读取指定端口管脚的输入输入参数
1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数
2GPIO_Pin:待读取的端口位参阅Section:GPIO_Pin查阅更多该参数允许取值范围输出参数无返回值输入端口管脚值先决条件无被调用函数无1.2函数GPIO_ReadInputData函数名GPIO_ReadInputData函数原形u16GPIO_ReadInputData(GPIO_TypeDef*GPIOx)功能描述读取指定的GPIO端口输入输入参数GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输出参数无返回值GPIO输入数据端口值先决条件无被调用函数无1.3函数GPIO_ReadOutputDataBit函数名GPIO_ReadOutputDataBit函数原形u8GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述读取指定端口管脚的输出输入参数
1GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输入参数
2GPIO_Pin:待读取的端口位参阅Section:GPIO_Pin查阅更多该参数允许取值范围输出参数无返回值输出端口管脚值先决条件无被调用函数无1.4函数GPIO_ReadOutputData函数名GPIO_ReadOutputData函数原形u16GPIO_ReadOutputData(GPIO_TypeDef*GPIOx)功能描述读取指定的GPIO端口输出输入参数GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设输出参数无返回值GPIO输出数据端口值先决条件无被调用函数无2项目分析按键电路,开发板共设置4个按键,用于向系统输入简单控制信息。蜂鸣器控制电路,蜂鸣器是单片机系统常用的声音输出器件,常用于报警信号输出。第一步:复制上一章创建工程模板文件夹到桌面,并将文件夹改名为“BeepKey”。第二步:点击“File/New”新建两个文件,将其改名为beepkey.c和beepkey.h并保存到工程模板下的APP文件中。并将beepkey.c文件添加到APP项目组下。3项目实施第三步:在beepkey.c文件中输入如下源程序,在程序中首先包含beepkey.H头文件,然后创建6个函数,voiddelay(u32i)函数为简单延时函数,voidBeepInit()为蜂鸣器初始化函数,voidKeyInit()为按键初始化函数,sound1()和sound2()为两个蜂鸣器发声程序。第四步:在beepkey.h文件中输入如下源程序,其中条件编译格式不变,只要更改一下预定义变量名称即可。第五步:在public.h文件的中间部分添加“#include“beepkey.h””语句,即包含beepkey.h头文件。第六步:在main.c文件中输入如下源程序,其中main函数就是三条语句,分别是调用BeepInit()函数对蜂鸣器管脚进行初始化,调用KeyInit()函数对按键管脚进行初始化,调用BeepKey函数进行按键控制不同报警声音产生。第七步:编译工程,如没有错误,则会在output文件夹中生成“工程模板.hex”文件,如有错误则修改源程序直至没有错误为止。第八步:将生成的目标文件通过ISP软件下载到开发板微控制器的FLASH存储器当中,复位运行,检查实验效果。15ARM应用开发15.1GPIO应用15.2定时器与PWM应用15.3按键与蜂鸣器15.4数码管显示15.5中断系统应用15.6串行通信15.7SPI通信应用15.8模数转换应用二传输网络介绍数码管工作原理数码管编码方式数码管显示方式数码管动态显示学号项目实施数码管动态显示时间项目实施数码管显示概要1数码管显示接口1.1数码管工作原理1.2数码管编码方式显示码的确定abcdefgdpgfedcbadpabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcbaabcdefgdpdpgfedcba1.3数码管显示方式静态显示动态显示2项目分析选中数码管1PE15=0送显示码PE=0x7FFFPG=0x00F9数码管动态显示方法的实现数码管动态显示方法的实现第一步:复制上一章创建工程模板文件夹到桌面,并将文件夹改名为“DsgShow”。第二步:点击“File/New”新建两个文件,将其改名为dsgshow.c和dsgshow.h并保存到工程模板下的APP文件夹中。并将dsgshow.c文件添加到APP项目组下。3项目实施本项目要完成的目标是利用目标板上的6个LED数码管实现时间显示第三步:在dsgshow.c文件中输入如下源程序,在程序中首先包含dsgshow.h头文件,然后创建2个函数,分别为DsgShowInit()函数和DsgShowNum()函数。第四步:在dsgshow.h文件中输入如下源程序,需要将我们刚定义函数的声明加到头文件当中。第五步:在public.h文件的中间部分添加“#include"dsgshow.h"”语句,即包含dsgshow.h头文件第六步:在main.c文件中输入如下源程序,其中main函数就是二条语句,分别调用DsgShowInit()对GPIOE和GPIOG进行初始化,调用DsgShowNum()函数进行动态扫描。第七步:编译工程,如没有错误,则会在output文件夹中生成“工程模板.hex”文件,如有错误则修改源程序直至没有错误为止。第八步:将生成的目标文件通过ISP软件下载到开发板微控制器的FLASH存储器当中,复位运行,检查实验效果。4项目拓展本节将介绍一个新的实例,其项目任务是主程序赋值的三个变量:“hour”、“minute”、“second”的值显示在六位数码管上,并在小时个位和分钟个位数字下面显示一个点。因为本例中涉及到不同文件之间共享同一变量,需要注意。因为此项目是上一项目的扩展,所以工程文件和上一项目是完全一样的,只是部分文件代码有所改变,改动涉及填加、修改和删除改动1在main.c文件中定义三个外部变量,并在main()函数中对其赋初值。修改后的main.c文件程序:改动2在dsgshow.c文件包含语句(#include"dsgshow.h")的下面,输入如下语句:externu8hour,minute,second;改动3在dsgshow.c文件中所有函数的外部定义两个数组,一个是用来存放数码管的段选码,一个用来存放数码管的位选码,数组变量的定义格式内容:改动4重新编写DsgShowTime()函数,完成时、分、秒的显示,此处需要把要显示的两位的每一位数字都取出来,另外小时和分钟个位数字的小数点需要显示出来。改动5将新定义的DsgShowTime()函数声明添加dsgshow.h文件中去,修改完成的到dsgshow.h文件源代码:14ARM应用开发(1)GPIO应用(2)
定时器与PWM应用(3)
按键与蜂鸣器(4)
数码管显示(5)
中断系统应用(6)
串行通信(7)SPI通信应用(8)
模数转换应用二传输网络介绍掌握中断的基本概念掌握STM32F103中断系统STM32F103外部中断/事件控制器EXTISTM32中断相关库函数,包括NVIC和EXTI两部分完成EXTI项目实例,利用外部中断调节时间中断系统概要1中断的基本概念1.1什么叫中断生活实例:假如你有朋友下午要来拜访,可又不知道他具体什么时候到。为了提高效率,你就边看书边等。在看书过程中,门铃响了。中断定义:CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序,叫做中断。1.2为什么要设置中断提高CPU工作效率
具有实时处理功能具有故障处理功能实现分时操作1.3中断源与中断屏蔽1.中断源:中断源:能引发中断的事件。通常,中断源都与外设有关。在生活中,门铃的铃声是一个中断源,它由门铃这个外设发出。在嵌入式系统中,常见的中断源有按键按下和释放、定时器溢出、串口收到数据等,与此相关的外设有键盘、定时器和串口等。中断请求标志位:每个中断源都有它对应的中断标志位。一旦该中断发生,它的中断标志位就会被置位。如果中断标志位被清除,那么它所对应的中断便不会再被响应。因此,一般在中断服务程序最后要将对应的中断标志位清零。2.中断屏蔽:可以通过设置相应的中断屏蔽位,禁止CPU响应某个中断,从而实现中断屏蔽。可屏蔽中断在生活中,门铃的铃声是一个可屏蔽中断。不可屏蔽中断在计算机系统中,电源故障、内存出错、总线出错等是不可屏蔽中断。1.4中断处理过程中断响应(硬件自动实现)保护现场找到该中断对应的中断服务程序的地址——中断向量表执行中断服务程序(用户编程)
中断服务程序通常是由用户使用C语言编写的特殊函数,用来实现对该中断真正的处理操作,具有以下特点:中断服务程序既没有参数,也没有返回值,更不由用户调用,而是当某个事件产生一个中断时由硬件自动调用。在中断服务程序中修改、在其他程序中访问的变量,在其定义和声明时要在前面加上volatile修饰词。中断服务程序要求应当尽量的简短。中断返回(硬件自动实现)恢复现场主程序中断请求kK+1中断响应中断返回1.5中断优先级与中断嵌套1.中断优先级:嵌入式系统中的中断往往不止一个,那么,对于多个同时发生的中断或者嵌套发生的中断,CPU又该如何处理?应该先响应哪一个中断?答案就是中断优先级看书
(主程序)电话铃响(中断请求1)门铃响(中断请求2)开门迎客
(门铃中断的中断服务程序)接听电话
(电话铃中断的中断服务程序)2.中断嵌套:在嵌入式系统中,中断嵌套是指当系统正在执行一个中断服务时,又有新的中断事件发生而产生了新的中断请求看书
(主程序)电话铃响(中断请求1)接听电话
(电话铃中断的中断服务程序)开门迎客
(门铃中断的中断服务程序)门铃响(中断请求2)2STM32F103中断系统2.1嵌套向量中断控制器NVIC
NVIC集成在ARMCortex-M3内核中,与中央处理器核心CM3Core紧密耦合,从而实现低延迟的中断处理和高效地处理晚到的较高优先级的中断。支持84个异常,包括16个内部异常和68个非内核异常中断;使用4位优先级设置,具有16级可编程异常优先级中断响应时处理器状态的自动保存,无须额外指令;中断返回时处理器状态的自动恢复,无须额外指令;支持嵌套和向量中断;支持中断尾链技术。2.2STM32F103中断优先级1.抢占优先级(PreemptingPriority)高抢占式优先级的中断事件会打断当前的主程序/中断程序运行,俗称中断嵌套。2.响应优先级(subpriority)在抢占式优先级相同的情况下,高响应优先级的中断优先被响应。3.判断中断是否会被响应的依据首先是抢占式优先级,其次是响应优先级;抢占式优先级决定是否会有中断嵌套。4.优先级冲突的处理具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断的嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。5.STM32中对中断优先级的定义2.3STM32F103中断向量表STM32F103各个中断对应的中断服务程序的入口地址统一存放在STM32F103的中断向量表中。STM32F103的中断向量表,一般位于其存储器的0地址处。位置优先级优先级类型名称说明地址
---保留0x0000_0000
-3固定Reset复位0x0000_0004
-2固定NMI不可屏蔽中断RCC时钟安全系统(CSS)联接到NMI向量0x0000_0008
-1固定硬件失效所有类型的失效0x0000_000C
0可设置存储管理存储器管理0x0000_0010
1可设置总线错误预取指失败,存储器访问失败0x0000_0014
2可设置错误应用未定义的指令或非法状态0x0000_0018
---保留0x0000_001C
---保留0x0000_0020
---保留0x0000_0024
---保留0x0000_0028
3可设置SVCall通过SWI指令的系统服务调用0x0000_002C
4可设置调试监控(DebugMonitor)调试监控器0x0000_0030
---保留0x0000_0034
5可设置PendSV可挂起的系统服务0x0000_0038
6可设置SysTick系统嘀嗒定时器0x0000_003C07可设置WWDG窗口定时器中断0x0000_004018可设置PVD连到EXTI的电源电压检测(PVD)中断0x0000_004429可设置TAMPER侵入检测中断0x0000_0048310可设置RTC实时时钟(RTC)全局中断0x0000_004C411可设置FLASH闪存全局中断0x0000_0050512可设置RCC复位和时钟控制(RCC)中断0x0000_00542.4STM32F103中断服务函数STM32所有的中断服务函数,在该微控制器所属产品系列的启动代码文件中都有预先定义。用户开发自己的STM32F103应用时可在文件stm32f10x_it.c中使用C语言编写函数重新定义之STM32定义的中断服务函数,在启动文件和stm32f10x_it.c中通常以PPP_IRQHanlder命名。3STM32F103外部中断/事件控制器EXTI3.1EXTI内部结构1.外部中断、事件输入:STM32F103外部中断/事件控制器EXT1内部信号线上画有一条斜线,旁边标有19,表示这样的线路共有19套。如果将STM32F103的I/O引脚映射为EXTI的外部中断/事件输入线,必须将该引脚设置为输入模式。2.APB外设接口:APB外设模块接口是STM32F103微控制器每个功能模块都有的部分,CPU通过这样的接口访问各个功能模块。尤其需要注意的是,如果使用STM32F103引脚的外部中断/事件映射功能,必须打开APB2总线上该引脚对应端口的时钟以及AFIO功能时钟。EXTI中的边沿检测器共有19个,用来连接19个外部中断/事件输入线,是EXTI的主体部分。每个边沿检测器由边沿检测电路、控制寄存器、门电路和脉冲发生器等部分组成。3.边沿检测器:3.2EXTI工作原理1.外部中断/事件请求的产生和传输:外部信号从编号1的STM32F103微控制器引脚进入。经过边沿检测电路,这个边沿检测电路受到上升沿触发选择寄存器和下降沿触发选择寄存器控制,用户可以配置这两个寄存器选择在哪一个边沿产生中断/事件。经过编号3的或门,这个或门的另一个输入是中断/事件寄存器。外部请求信号进入编号4的与门,这个与门的另一个输入是事件屏蔽寄存器。外部请求信号进入挂起请求寄存器,挂起请求寄存器记录了外部信号的电平变化。外部请求信号经过挂起请求寄存器后,最后进入编号6的与门。2.事件与中断:一路信号(中断)会被送至NVIC向CPU产生中断请求,至于CPU如何响应,由用户编写或系统默认的对应的中断服务程序决定。另一路信号(事件)会向其它功能模块(如定时器、USART、DMA等)发送脉冲触发信号,至于其它功能模块会如何响应这个脉冲触发信号,则由对应的模块自己决定。3.3EXTI主要特性STM32F103微控制器的外部中断/事件控制器EXTI,具有以下主要特性:每个外部中断∕事件输入线都可以独立地配置它的触发事件(上升沿、下降沿或双边沿),并能够单独地被屏蔽。每个外部中断都有专用的标志位(请求挂起寄存器),保持着它的中断请求。可以将多达112个通用I/O引脚映射到16个外部中断∕事件输入线上。可以检测脉冲宽度低于APB2时钟宽度的外部信号。4STM32中断相关库函数4.1STM32F10x的NVIC相关库函数1.函数NVIC_DeInit:函数名NVIC_DeInit函数原形voidNVIC_DeInit(void)功能描述将外设
NVIC寄存器重设为缺省值输入参数无输出参数无返回值无先决条件无被调用函数无2.函数NVIC_Ini
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 联想供应链团队招聘面试解析
- 零售业商品管理部主任岗位面试技巧探讨
- 快消品行业销售主管的面试技巧与经验
- 快速消费品业内审标准流程解读
- 快递员面试问题及回答参考
- 客户服务流程优化与实践
- 基于新型的减数机技术的未来产业变革与机遇探讨
- 旅游景区总经理招聘面试要点
- 零售业会计岗位面试全解析
- 护理安全管理的法律法规与伦理
- 2026年安徽邮电职业技术学院单招职业技能测试必刷测试卷附答案
- YY/T 0573.2-2025一次性使用无菌注射器第2部分:动力驱动注射泵用注射器
- 2025年湖北三峡职业技术学院单招(计算机)考试参考题库附答案解析
- 临床药师竞聘演讲
- 2026年南通科技职业学院单招职业技能测试必刷测试卷带答案解析
- 2026年陕西邮电职业技术学院单招职业倾向性测试必刷测试卷必考题
- 2026年江西财经职业学院单招职业倾向性考试必刷测试卷必考题
- 2025年物流管理专升本模拟测试冲刺试卷(含答案)
- 锅炉突发事故应急预案
- 2025年政府采购考试题库及答案
- 南京机电职业技术学院单招《语文》测试卷及答案详解参考
评论
0/150
提交评论