版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章CC2530基础开发第3章CC2530基础开发本章知识拓扑图本章知识拓扑图具体案例如下:本章案例【案例3】光照信息采集【案例2】CC2530按键中断控制LED状态【案例1】CC2530控制LED闪烁跳转【案例4】温度信息采集具体案例如下:本章案例【案例3】光照信息采集【案例2】CCC2530结构框架、最小系统通用I/O通用I/O中断外设I/O振荡器和时钟设置、电源管理ADC温度信息采集本章教学内容CC2530结构框架、最小系统本章教学内容3.1CC2530结构框架3.2CC2530最小系统教学目标:掌握CC2530结构框架、最小系统设计。CC2530结构框架、最小系统3.1CC2530结构框架CC2530结构框架、最小系统3.1CC2530结构框架知识点1:CC2530内部结构组成及功能提问:CC2530内部结构包括哪些模块?功能是什么?知识点2:CC2530CPU的认知提问:CC2530CPU的特点是什么?知识点3:存储器提问1:CC2530物理存储器有哪些?功能是什么?提问2:CC2530存储空间有哪些?各有什么作用?3.1CC2530结构框架知识点1:CC2530内部结构3.1.1CC2530内部结构CC2530内部结构如下图所示3.1.1CC2530内部结构CC2530内部结构如下图3.1.1CC2530内部结构1.CPU和内存相关模块(1)CPUCC2530的CPU采用增强型8051内核,兼容业界标准的8051微控制器并使用标准的8051指令集,增强型8051指令的执行速度要比标准的8051执行速度要快。主要原因如下:1)标准的8051每个指令周期为12个时钟周期,增强型8051的每个指令周期为一个时钟周期。2)增强型8051消除了总线状态的浪费。(2)中断控制器
通过控制中断来处理随机发生的事件。CPU晶振的振荡周期晶振频率的倒数3.1.1CC2530内部结构1.CPU和内存相关模块3.1.1CC2530内部结构1.CPU和内存相关模块(3)存储器仲裁器位于核心位置,把CPU、DMA控制器、存储器、外设连接起来。(4)8KBSRAM8KB的SRAM,超低功耗,当数字部分掉电时,能够保留自己的内容。(5)32KB/64KB/128KB/256KB闪存
闪存是可编程的非易失程序存储器,用来保存程序代码、常量,掉电后其保存的内容不丢失。依据型号不同,CC2530的闪存分成4种容量:32KB、64KB、128KB、256KB。3.1.1CC2530内部结构1.CPU和内存相关模块3.1.1CC2530内部结构2.外设CC2530集成了丰富的外设,具体如下:(1)调试接口
通过调试接口,执行闪存的擦除、控制使能相应的振荡器、停止和开始执行用户程序、执行8051内核提供的指令、设置代码断点、指令的单步调试,从而执行内部电路的调试和外部闪存的编程。(2)输入/输出控制器
控制所有的输入/输出引脚,如设置引脚的功能或方向等。(3)定时器
包括定时器1、时器2、时器3、定时器4和睡眠定时器。3.1.1CC2530内部结构2.外设3.1.1CC2530内部结构2.外设(4)ADC12位的ADC,实现模拟量到数字量的转换。(5)AES协处理器
允许用户使用带有128位密钥的AES算法加密和解密数据,实现安全的数据传输。(6)USART0和USART1
串口0、串口1,可以实现同步或异步串行通信。3.1.1CC2530内部结构2.外设物理存储器和存储空间CC2530的物理存储器CC2530存储空间映射3.1.2存储器和映射物理存储器和存储空间3.1.2存储器和映射物理存储器和存储空间物理存储器是指实际存在的具体存储介质,比如芯片内部的RAM、Flash、SFR寄存器等。存储空间是一个虚拟的空间,是指对存储器编码的范围。所谓编码就是对每一个物理存储单元(通常是一个字节)分配一个编号,叫做“编址”。思考:编址的目的?方便找到存储器并完成数据的读写。3.1.2
存储器和映射物理存储器和存储空间3.1.2存储器和映射CC2530物理存储器SRAM:静态RAM,未上电时,RAM的内容是未定义的。主要功能是在供电模式下保存信息内容,只要电源供电,信息内容就不会消失。闪存存储器:主要功能是保存程序代码和常量数据,其页面大小为2KB,擦除时间为20ms,闪存芯片批量擦除时间为20ms,闪存写时间为20us,数据常温下保存时间为100年,可编程、擦除次数为20000次。3.1.2
存储器和映射CC2530物理存储器3.1.2存储器和映射CC2530物理存储器信息页面:2KB的只读区域,存储设备信息。主要存储来自CC2530芯片唯一的IEEE地址。它以最低位优先的形式存储在XDATA的地址为0x780C。SFR寄存器:特殊功能寄存器,控制8051CPU内核或外设的一些功能,大多数8051CPU内核的SFR和标准的8051SFR相同,但是有一部分特殊的寄存器功能在标准的8051中是没有的,比如RF收发器寄存器。3.1.2
存储器和映射CC2530物理存储器3.1.2存储器和映射3.1.2
存储器和映射…地址增大方向000110地址11存储器1000x12345678最高字节次高字节次低字节最低字节0x780x560x340x12最低位优先存储思考:数据0x12345678以最高位优先,如何存储?返回3.1.2存储器和映射…地址增大方向000110地址11CC2530存储空间CODE:一个只读的存储空间,用于程序存储。其最大寻址空间为64KB。DATA:一个读、写的数据存储空间,可以直接或间接被一个周期CPU指令访问。最大DATA寻址空间为256字节。DATA存储空间的低128字节可以直接或间接寻址,较高的128字节只能间接寻址。3.1.2
存储器和映射CC2530存储空间3.1.2存储器和映射XDATA:一个读、写的数据存储空间,通常需要4-5个CPU指令周期来访问。最大寻址空间为64KB,访问XDATA的存储器慢于访问DATA。SFR:一个读、写寄存器存储空间,可以直接被一个CPU指令访问。这一存储空间含有128字节。对于地址是被8整除的SFR寄存器,每一位还可以单独寻址。XREG寄存器为XDATA存储空间中的其它特殊寄存器,用于无线电配置和控制。3.1.2
存储器和映射XDATA:一个读、写的数据存储空间,通常需要4-5个CPU3.1.2存储器和映射知识点:映射提问1:CC2530映射的功能是什么?主要有哪些映射?如何映射?提问2:映射寄存器有哪些?如何控制映射?知识点:最小系统提问1:CC2530引脚有哪些?有什么功能?提问2:CC2530最小系统如何设计?3.1.2存储器和映射知识点:映射映射:方便DMA控制器访问全部的物理存储器,并由此使得数据通过DMA在不同8051存储空间之间进行传输。在CC2530内核中,映射分为:XDATA映射CODE映射3.1.2
存储器和映射数据存储空间映射,所有的物理空间都包含其中,为了便于DMA用这个独立的地址空间访问所有的存储设备。程序存储空间的映射映射:方便DMA控制器访问全部的物理存储器,并由此使得数据通XDATA映射3.1.2
存储器和映射XBANK。主要存储常量数据。信息页面映射到XDATA的地址区域为0x7800~0x7FFF,个只读区域,存储与芯片相关的信息。8051的SFR寄存器映射的地址区域为0x7080~0x70FF。SRAM的映射地址为0x0000~SRAM_SIZE-1,8051的DATA映射空间为SRAM_SIZE-256~SRAM_SIZE-1。返回最大寻址空间64KB每个字节分配一个地址最小的地址为0最大的地址为64K-1=216-110000000000000000-1=1111111111111111=0xFFFFXREGXDATA映射3.1.2存储器和映射XBANK。主要存储CODE映射一3.1.2
存储器和映射CC2530F256中的FLASH存储空间为256KB,超出了8051单片机16位地址总线的寻址空间。CC2530将FLASH存储器分成了几个区域(也称Bank):Bank0~Bank7,每个Bank的大小为32KB。CC2530F256有8个Bank,通过寄存器的操作来决定将哪一个Bank映射到CODE上。普通区Bank0总是映射到物理闪存存储器较低的32KB,存放启动代码。CODE映射一3.1.2存储器和映射CC2530F256CODE映射二3.1.2
存储器和映射当从SRAM中启动CODE映射二3.1.2存储器和映射当从SRAM中启动寄存器映射存储器仲裁控制寄存器MEMCTR闪存区映射寄存器FMAP3.1.2
存储器和映射主要控制Flash存储器的哪一个BANK映射到XDATA的XBANK区。控制物理闪存存储器的BANK区域代码区映射到CODE存储空间的程序地址区域0x8000~0xFFFF。寄存器映射3.1.2存储器和映射主要控制Flash存储器存储器仲裁控制寄存器MEMCTR3.1.2
存储器和映射位名称复位R/W描述7~4--0000R0保留3XMAP0R/WXDATA映射到CODE,当设置了此位,SRAMXDATA区域从0x0000到(SRAM_SIZE-1)映射到CODE区域的0x8000到(0x8000+SRAM_SIZE-1),从而使程序代码从RAM执行。0:SRAM映射到CODE功能禁用;1:SRAM映射到CODE功能使能2~0XBANK[2:0]000R/WXDATA区选择,控制物理闪存存储器的哪个代码区域映射到XDATA区域(0x8000-0xFFFF)。当设置为0,映射到根底部。有效设置取决于设备的闪存大小。写一个无效设置被忽略,即不会更新XBANK[2:0]。CC2530F32:只能是0CC2530F64:0-1CC2530F128:0-3CC2530F256:0-7设置为000:Bank0设置为001:Bank1设置为010:Bank2设置为011:Bank3设置为100:Bank4设置为101:Bank5设置为110:Bank6设置为111:Bank7存储器仲裁控制寄存器MEMCTR3.1.2存储器和映射位闪存区映射寄存器FMAP3.1.2
存储器和映射位名称复位R/W描述7~3--00000R0保留2~0MAP[2:0]001R/W闪存区域映射,控制物理闪存存储器的哪个代码映射到CODE区域(0x8000-0xFFFF)。当设置为0,映射到根部区。有效设置取决于设备的闪存大小。写一个无效设置被忽略,即不会更新MAP[2:0]CC2530F32:只能是0CC2530F64:0-1CC2530F128:0-3CC2530F256:0-7闪存区映射寄存器FMAP3.1.2存储器和映射位名称复位【实例3-1】对于芯片CC2530F256,如果要映射FLASH的Bank5至CODE区域,如何设置FMAP?FMAP=0x053.1.2存储器和映射FMAP|=0X05;00000101【实例3-1】对于芯片CC2530F256,如果要映射FLA3.2.1CC2530引脚3.2最小系统I/O引脚模拟电源引脚数字电源引脚GND的引脚无线电引脚外部晶体振荡器引脚模拟I/O引脚复位引脚3.2.1CC2530引脚3.2最小系统I/O引脚模3.2.2最小系统设计CC2530片内集成了丰富的外设,最小系统电路的设计比较如右图所示,主要包括电源电路设计、时钟电路设计、复位电路设计、天线设计。3.2最小系统3.2.2最小系统设计3.2最小系统3.3.1功能寄存器PxSEL3.3.2方向寄存器PxDIR3.3.3配置寄存器PxINP教学目标:掌握CC2530通用I/O寄存器及其应用。3.3通用I/O3.3.1功能寄存器PxSEL3.3通用I/O3.3通用I/O知识点1:I/O端口的特点、分类、设置方法提问:I/O端口的重要特点是什么?CC2530有哪些端口?分别是多少位?对应哪些引脚?知识点2:功能选择寄存器PxSEL提问:功能选择寄存器有什么作用?如何配置?知识点3:方向寄存器PxDIR提问:方向寄存器有什么作用?如何配置?知识点4:寄存器应用提问:如何控制LED闪烁3.3通用I/O知识点1:I/O端口的特点、分类、设置方有21个输入/输出引脚,可以配置为通用数字I/O或外设I/O信号。通用I/O特点21个数字I/O引脚可以配置为通用I/O或外部设备I/O输入口具备上拉或下拉能力具有外部中断能力3.3通用I/O等同输入口连接了上拉或下拉电阻输入口连接上拉电阻的一种电路①按键按下(有输入),P2_0为0;②按键不按下(无输入,即输入悬空),P2_0为1(处于确定状态)返回有21个输入/输出引脚,可以配置为通用数字I/O或外设I/OI/O口用作通用I/O时引脚可以组成3个8位端口,端口0、端口1和端口2,分别用P0、P1和P2来表示:21端口0即P0口:有8位端口,分别是P0_0~P0_7;端口1即P1口:有8位端口,分别是P1_0~P1_7;端口2即P2口:有5位端口,分别是P2_0~P2_4;3.3通用I/OI/O口用作通用I/O时引脚可以组成3个8位端口,端口0、端功能寄存器PxSEL方向寄存器PxDIR配置寄存器PxINP3.3通用I/O其中x端口的标号0~2注意功能寄存器PxSEL3.3通用I/O其中x端口的标号0~3.3通用I/Occ2530的特殊功能寄存器地址3.3通用I/Occ2530的特殊功能寄存器地址功能寄存器用来设置端口的每个引脚为通用I/O或外设I/O信号,复位之后,所有的数字I/O引脚都被设置为通用输入引脚。3.3.1功能寄存器PxSEL功能寄存器用来设置端口的每个引脚为通用I/O或外设I/O信号3.3.1功能寄存器PxSEL位名称复位R/W描述7SELP0[7]0R/WP0_7功能选择0:通用I/O1:外设I/O6SELP0[6]0R/WP0_6功能选择0:通用I/O1:外设I/O5SELP0[5]0R/WP0_5功能选择0:通用I/O1:外设I/O4SELP0[4]0R/WP0_4功能选择0:通用I/O1:外设I/O3SELP0[3]0R/WP0_3功能选择0:通用I/O1:外设I/O2SELP0[2]0R/WP0_2功能选择0:通用I/O1:外设I/O1SELP0[1]0R/WP0_1功能选择0:通用I/O1:外设I/O0SELP0[0]0R/WP0_0功能选择0:通用I/O1:外设I/O功能寄存器P0SEL返回3.3.1功能寄存器PxSEL位名称复位R/W描述7SE如果要将某一引脚设置为通用I/O或者是外设I/O只需要将相应的“位”设置为0或1即可。例:将P0_1设置为通用I/O例:将P0_2设置为外设I/O3.3.1功能寄存器PxSELP0SEL&=~0x02;P0SEL|=0x04;,需要将P0SEL的“第1位”置0,其它位不变。,需要将P0SEL的“第2位”置1,其它位不变。11111101P0SEL&00000100P0SEL|
00000010→取反如果要将某一引脚设置为通用I/O或者是外设I/O只需要将相应CC2530的端口用作通用I/O时,可以使用方向寄存器PxDIR配置其信号方向,在复位的情况下,所有数字I/O引脚均被设置为输入引脚。3.3.2方向寄存器PxDIRCC2530的端口用作通用I/O时,可以使用方向寄存器PxD3.3.2方向寄存器PxDIR位名称复位R/W描述7DIRP0[7]0R/WP0_7的I/O方向选择
0:输入
1:输出6DIRP0[6]0R/WP0_6的I/O方向选择
0:输入
1:输出5DIRP0[5]0R/WP0_5的I/O方向选择
0:输入
1:输出4DIRP0[4]0R/WP0_4的I/O方向选择
0:输入
1:输出3DIRP0[3]0R/WP0_3的I/O方向选择
0:输入
1:输出2DIRP0[2]0R/WP0_2的I/O方向选择
0:输入
1:输出1DIRP0[1]0R/WP0_1的I/O方向选择
0:输入
1:输出0DIRP0[0]0R/WP0_0的I/O方向选择
0:输入
1:输出方向寄存器P0DIR3.3.2方向寄存器PxDIR位名称复位R/W描述7DI当端口P0引脚设置为通用I/O的输入或输出功能时,只需要将P0DIR寄存器相应的“位”设置为0或1即可。例:要将P0_1设置为输入I/O例:将P0_2设置为输出I/O,3.3.2方向寄存器PxDIRP0DIR&=~0x02;P0DIR|=0x04;,需要将P0DIR的“第1位”置0,其它位不变。11111101P0DIR&需要将P0DIR的“第2位”置1,其它位不变。00000100P0DIR|→取反00000010当端口P0引脚设置为通用I/O的输入或输出功能时,只需要将P3.3.3配置寄存器PxINP知识点5:配置寄存器PxINP提问:配置寄存器有什么作用?如何配置?知识点6:寄存器应用提问:如何通过按键控制LED改变状态3.3.3配置寄存器PxINP知识点5:配置寄存器PxI当端口用作通用I/O输入时,引脚可以设置为上拉、下拉和三态操作模式。复位之后,所有的端口均被设置为带有上拉的输入。要取消输入的上拉和下拉功能,需要将PxINP中的对应“位”设置为1。其中I/O端口引脚P1_0和P1_1没有上拉和下拉功能,即当端口配置为外设I/O信号时,引脚没有上拉和下拉功能。3.3.3配置寄存器PxINP当端口用作通用I/O输入时,引脚可以设置为上拉、下拉和三态操以P0INP为例来讲解配置寄存器PxINP的使用,端口P0的配置寄存器P0INP。3.3.3配置寄存器PxINP位名称复位R/W描述7MDP0[7]0R/WP0_7的I/O输入模式功能选择0:上拉/下拉1:三态6MDP0[6]0R/WP0_6的I/O输入模式功能选择0:上拉/下拉1:三态5MDP0[5]0R/WP0_5的I/O输入模式功能选择0:上拉/下拉1:三态4MDP0[4]0R/WP0_4的I/O输入模式功能选择0:上拉/下拉1:三态3MDP0[3]0R/WP0_3的I/O输入模式功能选择0:上拉/下拉1:三态2MDP0[2]0R/WP0_2的I/O输入模式功能选择0:上拉/下拉1:三态1MDP0[1]0R/WP0_1的I/O输入模式功能选择0:上拉/下拉1:三态0MDP0[0]0R/WP0_0的I/O输入模式功能选择0:上拉/下拉1:三态以P0INP为例来讲解配置寄存器PxINP的使用,端口P0的3.3.3配置寄存器PxINPP0INP&=~0x20;配置寄存器P0INP配置示例:P0_5作为通用输入,设置为上拉/下拉功能P0_3作为通用输入,设置为三态功能P0INP|=0x08;11011111P0INP&→取反0010000000001000P0INP|3.3.3配置寄存器PxINPP0INP&=~0x2导入:过春节时,家家户户都要在窗户上装饰彩灯,形状各异、颜色繁多的彩灯一闪一闪,非常漂亮。彩灯闪烁是如何控制的呢?本节在前面知识的基础上介绍CC2530通过按键来控制LED闪烁,即查询按键是否按下(闭合),如果按下,LED闪烁,否则熄灭。案例主要涉及硬件电路的设计,以及程序的设计。3.3.4案例:CC2530控制LED闪烁导入:过春节时,家家户户都要在窗户上装饰彩灯,形状各异、颜色3.3.4案例:CC2530控制LED闪烁硬件电路设计3.3.4案例:CC2530控制LED闪烁硬件电路设计3.3.4案例:CC2530控制LED闪烁程序设计
设计程序时,需要解决3个问题,一是如何检测S1键是否按被下;二是如何控制4个LED同时闪烁,三是设计主函数和子函数。(1)检测S1键是否被按下
对按键的一次操作,是按下或释放。①检测S1键是否被按下
②检测S1键是否被释放(2)控制4个LED闪烁
通常LED闪烁一次,就是控制它们亮一次,延时一段时间,再控制它们灭一次,延时时间一般设置为0.3秒左右。3.3.4案例:CC2530控制LED闪烁程序设计3.3.4案例:CC2530控制LED闪烁程序设计
(3)设计主函数和子函数
依据程序设计实现的功能,设计一个主函数和3个子函数。主函数循环判断S1键是否闭合,如果闭合延时去抖动,再次判断,确实S1键闭合,控制LED闪烁一次,等待S1键被释放,再重新判断S1键的状态。3个子函数分别是延时子函数,按键初始化子函数、LED初始化子函数。延时子函数实现按键去抖动及LED点亮和熄灭的延时;按键初始化子函数设置P0_5为通用的输入功能;LED初始化子函数设置控制LED的引脚为通用的输出功能,并将LED熄灭。3.3.4案例:CC2530控制LED闪烁程序设计【案例】程序代码#include<ioCC2530.h>#defineuintunsignedint#defineON1#defineOFF0#defineLED1P1_0#defineLED2P1_1#defineLED3P1_4#defineLED4P0_1#defineS1P0_5voidDelay(uint);voidInitial(void);voidInitKey(void);
3.3.4案例:CC2530控制LED闪烁【案例】程序代码3.3.4案例:CC2530控制LED闪烁voidmain(void){ Initial(); InitKey(); while(1) { if(S1==0) { Delay(30);/*延时子函数,延时去抖动*/ if(S1==0) {
LED1=ON; LED2=ON; LED3=ON;3.3.4案例:CC2530控制LED闪烁voidmain(void)3.3.4案例:CC2530LED4=ON;Delay(1500);LED1=OFF;LED2=OFF;LED3=OFF;LED4=OFF;Delay(1500);while(!S1); /*等待S1键被释放*/}}}}3.3.4案例:CC2530控制LED闪烁LED4=ON;3.3.4案例:voidDelay(uintn){uinti,j;for(i=0;i<n;i++){for(j=0;j<200;j++){asm("NOP");asm("NOP");asm("NOP");}}}3.3.4案例:CC2530控制LED闪烁voidDelay(uintn)3.3.4案例:CC2voidInitKey(void){P0SEL&=~0x20;P0DIR&=~0x20;P0INP|=0x20; }voidInitial(void){P1DIR|=0x13;P0DIR|=0x02;LED1=OFF;LED2=OFF;LED3=OFF;LED4=OFF;}3.3.4案例:CC2530控制LED闪烁思考:(1)按键初始化子函数中,P0_5引脚为什么设置为三态?(2)CC2530是如何知道S1键按下的?voidInitKey(void)3.3.4案例:CC教学目标3.4通用I/O中断理解中断的相关概念、中断的作用掌握通用I/O中断的应用相关寄存器名称、作用、设置方法实例:CC2530通过按键中断控制LED问题导入:在3.3.4案例中,CPU如何知道S1键按下的?循环判断S1==0CPU控制外设的方式:查询法外设需要CPU控制时,主动提申请。教学目标3.4通用I/O中断理解中断的相关概念、中断的知识点1:中断相关概念和中断的作用中断源、中断请求、中断响应、中断服务程序、中断向量、中断返回、中断优先级、中断等相关概念及中断的作用。3.4通用I/O中断知识点1:中断相关概念和中断的作用3.4通用I/O中断3.4.1中断相关概念妈妈叮嘱你:来电话,一定要接,并做好记录。没来电话可以做自己喜欢的事,但要注意安全。一、导入:什么是中断?3.4.1中断相关概念妈妈叮嘱你:一、导入:什么是中断?一、导入:什么是中断?3.4.1中断相关概念妈妈走后:没来电话,你尽情地玩。电话铃响了,接电话,做记录。对于你来说,什么是中断?开心地玩→电话铃响了,你停止玩→接电话,做记录→然后继续玩。整个过程就是中断。中断的作用提高效率。一、导入:什么是中断?3.4.1中断相关概念妈妈走后:对二、中断相关概念把你比喻成CPU,玩看成执行程序,CPU的主要工作是执行程序。主程序原来正常运行的程序。中断源引起CPU中断的原因,称为中断源。中断请求(中断申请)
中断源要求服务的请求。中断响应当CPU发现已有中断请求时,中止、保存现行程序执行状态,并自动引出中断服务程序的过程。3.4.1中断相关概念二、中断相关概念3.4.1中断相关概念中断服务程序CPU响应中断后,转去执行的相应的处理程序。中断向量中断源发出的请求被CPU检测到之后,如果允许响应中断,则CPU会自动转移,执行一个固定的程序空间地址中的指令。这个固定的地址称作中断入口地址,也称为中断向量。中断返回中断源向CPU提出的中断请求,CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方,称为中断返回。3.4.1中断相关概念断点中断服务程序3.4.1中断相关概念断点3.4.1中断相关概念主程序中断请求t中断响应中断返回主程序断点中断服务程序单个中断响应过程图解13.4.1中断相关概念主程序中断请求t中断响应中断返回主中断优先级中断响应的优先次序是中断优先级,高级中断先响应。中断CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理;CPU暂时中断当前的工作,转去处理事件B;待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A,这一过程称为中断。中断机构实现中断功能的部件称为中断系统,也称中断机构。3.4.1中断相关概念中断优先级3.4.1中断相关概念3.4.1中断相关概念主程序中断请求t中断响应中断返回主程序断点中断服务程序1中断响应中断请求断点中断返回中断服务程序2低级高级嵌套中断响应过程图解23.4.1中断相关概念主程序中断请求t中断响应中断返回主知识点2:CC2530中断源、中断优先级的设置方法提问:CC2530中断源有哪些?中断优先级如何设置?并能举例说明知识点3:中断使能寄存器和中断标志寄存器提问:中断使能寄存器和中断标志寄存器分别实现了什么作用?3.4.1中断相关概念知识点2:CC2530中断源、中断优先级的设置方法3.4.13.4.2通用I/O中断的应用1.中断源CC2530的CPU有18个中断源,每个中断源都由一系列的SFR寄存器进行控制。18个中断源,每个中断都可以分别使能和控制。3.4.2通用I/O中断的应用1.中断源3.4.2通用I/O中断的应用UniversalSynchronous/AsynchronousReceiverTransmitter3.4.2通用I/O中断的应用UniversalSync3.4.2通用I/O中断的应用2.中断优先级CC2530的18个中断是有中断优先级的,18个中断组成6个中断优先级组,每一组有三个中断源,中断优先级可以通过配置寄存器来实现。中断优先级组组名中断源IPG0RFERRRFDMAIPG1ADCT1P2INTIPG2URX0T2UTX0IPG3URX1T3UTX1IPG4ENCT4P1INTIPG5STP0INTWDT3.4.2通用I/O中断的应用2.中断优先级组名中断源I3.4.2通用I/O中断的应用中断优先级寄存器中断优先级是由寄存器IP0和IP1来设置,IP0和IP1寄存器设置的中断优先级组的优先情况。IP1_XIP0_X优先级000(优先级别最低)011102113(优先级别最高)3.4.2通用I/O中断的应用中断优先级寄存器IP1_XI3.4.2通用I/O中断的应用中断优先级设置中断优先级寄存器设置中IP1_X与IP0_X中的X代表了中断优先级组的组名,即IPF0~IPG5。在设置优先级时“3”的优先级别最高,“0”的优先级别最低。例:要将IPG3优先级组设置为最高优先级,将IPG0优先级组设置为最低优先级别。IP1_IPG3=1;IP0_IPG3=1;设置IPG3的优先级别最高IP1_IPG0=0;IP0_IPG0=0;设置IPG0的优先级别最低思考:如何设置IPG2的优先级为2?3.4.2通用I/O中断的应用中断优先级设置IP1_IPG3.4.2通用I/O中断的应用中断优先级设置在设置中断优先级组的优先级别后,在一个优先级组中有3个中断,如果这3个中断同时发生时,需要再次判断同一优先级组中3个中断的优先级别。同一优先级组的中断的优先级由中断轮流探测顺序来决定其优先级。中断向量编号中断名称优先级排序0RFERR轮流探测顺序自上向下优先级依次降低16RF8DMA1ADC9T12URX010T23URX111T34ENC12T45ST13P0INT6P2INT7UTX014UTX115P1INT17WDT3.4.2通用I/O中断的应用中断优先级设置中断向量编号中3.4.2通用I/O中断的应用3.通用I/O中断的应用(1)如何产生中断请求?通用I/O引脚在设置为输入后,可以用于产生中断,并且还可以设置其触发方式。通用I/O中断在P0、P1和P2三个端口上都可以产生,在设置其中断时需要将其要发生中断引脚的使能位置1。P0端口中断使能位:IEN1.P0IEP1端口中断使能位:IEN2.P1IEP2端口中断使能位:IEN2.P2IE3.4.2通用I/O中断的应用3.通用I/O中断的应用3.4.2通用I/O中断的应用3.通用I/O中断的应用(2)CC2530如何知道发生了中断?中断发生之后,在P0~P2端口会有相应的中断标志位产生,中断标志位由中断标志寄存器自动产生,不需要人为设置。P0端口中断标志寄存器:P0IFGP1端口中断标志寄存器:P1IFGP2端口中断标志寄存器:P2IFG3.4.2通用I/O中断的应用3.通用I/O中断的应用4.中断相关的寄存器知识点4:中断使能寄存器IEN0、IEN1、IEN2、P0IEN提问:P0端口、P1端口、P2端口的中断如何使能和禁止?并能举例说明3.4.2通用I/O中断的应用4.中断相关的寄存器3.4.2通用I/O中断的应用3.4.2通用I/O中断的应用中断使能寄存器IEN1功能:控制P0端口、定时器1~4和DMA中断的使能和禁止。设置方法:如果使某一位中断使能,需要将IEN1中对应的“位”设置为“1”;如果将中断禁止,需要将其设置为“0”。3.4.2通用I/O中断的应用中断使能寄存器IEN13.4.2通用I/O中断的应用中断使能寄存器IEN13.4.2通用I/O中断的应用中断使能寄存器IEN13.4.2通用I/O中断的应用中断使能寄存器IEN1P0IE控制通用I/O中断的P0端口的中断使能和禁止,如果要设置P0端口发生中断,需要将其设置为中断使能。例:设置P0端口中断使能IEN1|=0x20;00100000IEN1
|返回3.4.2通用I/O中断的应用中断使能寄存器IEN1IEN3.4.2通用I/O中断的应用中断使能寄存器IEN2功能:控制看门狗定时器、P1端口、串口发送、P2端口、RF中断的使能和禁止。设置方法:如果使某一位中断使能,需要将IEN2中对应的“位”设置为“1”;如果将中断禁止,需要将其设置为“0”。3.4.2通用I/O中断的应用中断使能寄存器IEN23.4.2通用I/O中断的应用中断使能寄存器IEN23.4.2通用I/O中断的应用中断使能寄存器IEN23.4.2通用I/O中断的应用中断使能寄存器IEN2P1IE、P2IE控制通用I/O中断的P1和P2端口的中断使能和禁止,如果要设置P1和P2端口发生中断需要将其设置为中断使能。设置P1和P2端口中断使能IEN2|=0x12;00010010IEN2
|3.4.2通用I/O中断的应用中断使能寄存器IEN2IEN3.4.2通用I/O中断的应用中断使能寄存器PxIEN功能:可以单独配置端口的某一引脚中断使能或禁止。说明:x可以是0~2。3.4.2通用I/O中断的应用中断使能寄存器PxIEN3.4.2通用I/O中断的应用中断使能寄存器P0IEN3.4.2通用I/O中断的应用中断使能寄存器P0IEN3.4.2通用I/O中断的应用中断使能寄存器P0IEN功能:中断使能寄存器P0IEN控制P0端口P0_0~P0_7引脚的中断禁止和使能。设置方法:如果要使某一特定引脚中断使能或禁止,需要在P0IEN中将相应的“位”设置为“0”或“1”。例:设置P0_5中断使能设置P0端口中断使能P0IEN|=0x20;IEN1|=0x20;00100000P0IEN|3.4.2通用I/O中断的应用中断使能寄存器P0IENP03.4.2通用I/O中断的应用中断使能寄存器IEN0通用I/O中断在设置完引脚之后,需要开启CC2530的总中断。总中断EA位于中断使能寄存器IEN0的第7位,此位决定CC2530所有中断的使能和禁止。3.4.2通用I/O中断的应用中断使能寄存器IEN03.4.2通用I/O中断的应用中断使能寄存器IEN03.4.2通用I/O中断的应用中断使能寄存器IEN03.4.2通用I/O中断的应用中断使能寄存器IEN0例:总中断使能EA=1;IEN0|=0x80;10000000IEN0|3.4.2通用I/O中断的应用中断使能寄存器IEN0EA=知识点5:中断触发方式寄存器PICTL提问:如何控制P0端口、P1端口、P2端口的中断触发方式?并能举例说明。知识点6:中断标志寄存器提问:如何应用中断标志寄存器?3.4.2通用I/O中断的应用知识点5:中断触发方式寄存器PICTL3.4.2通用I/O3.4.2通用I/O中断的应用中断触发方式寄存器PICTL通用I/O在作为中断使用时,可以配置其中断触发方式。PICTL来设置中断触发方式,其触发方式分为上升沿触发方式和下降沿触发方式两种。下降沿触发方式引脚初始状态为高电平外部中断事件引脚状态改变为低电平3.4.2通用I/O中断的应用中断触发方式寄存器PICTL3.4.2通用I/O中断的应用中断触发方式寄存器PICTL33.4.2通用I/O中断的应用中断触发方式寄存器PICTL3.4.2通用I/O中断的应用中断触发方式寄存器PICTL功能:可以控制P0端口、P1端口和P2端口的触发方式。设置方法:对应位设置0为上升沿触发方式,设置1为下降沿触发方式。例:设置P0_5引脚中断为下降沿触发方式。PICTL|=0X01;00000001PICTL|3.4.2通用I/O中断的应用中断触发方式寄存器PICTL3.4.2通用I/O中断的应用中断标志寄存器PxIFGI/O中断发生后,PxIFG的相应位会自动置“1”。在中断处理函数中判断是否有中断发生只需要判断寄存器PxIFG的值是否大于“0”,或者是PxIFG的某一位是否大于0即可。3.4.2通用I/O中断的应用中断标志寄存器PxIFG3.4.2通用I/O中断的应用中断标志寄存器P0IFG3.4.2通用I/O中断的应用中断标志寄存器P0IFG3.4.2通用I/O中断的应用中断标志寄存器P0IFG如果在P0端口有中断发生,但不需要判断具体是哪一引脚发生中断时,如何编程写出判断条件?在判断中断标志时只需要判断P0IFG是否大于0即可。/*判断端口P0是否发生中断*/if(P0IFG>0){
}3.4.2通用I/O中断的应用中断标志寄存器P0IFG/*3.4.2通用I/O中断的应用中断标志寄存器P0IFG如果需要判断是否某一引脚发生中断,如何编程写出判断条件?需要判断PxIFG寄存器中相应的“位”是否置1。思考:判断P0_5是否发生中断,如何编程写出判断条件?if(P0IFG&0x20){
}001000003.4.2通用I/O中断的应用中断标志寄存器P0IFGif导入:居家悬挂的节日彩灯,通常有控制按钮,用来控制显示不同的颜色,这是如何控制的呢?本节在前面知识的基础上介绍CC2530通过按键来控制LED状态,即检测按键按下(闭合)的次数,第一次按下,点亮红色的LED1,第二次按下,点亮绿色的LED2,第三次按下,点亮蓝色的LED3,第4次按下,点亮黄色的LED4闪烁,开始时各色的LED都点亮。由于按键事件是随机发生的,所以,应用中断来实现该案例,主要涉及硬件电路的设计,以及程序的设计。3.4.3案例:CC2530按键中断控制LED状态导入:居家悬挂的节日彩灯,通常有控制按钮,用来控制显示不同的3.4.3案例:CC2530按键中断控制LED状态硬件电路设计3.4.3案例:CC2530按键中断控制LED状态硬件电程序设计
要实现按下S1键产生中断,以点亮不同颜色的LED,在设计程序时,需要解决3个问题,一是如何通过按下S1键产生中断;二是如何检测到中断发生,以便控制4个LED分别点亮,三是设计主函和子函数。(1)通过按下S1键产生中断
通过前面3.3.4节的分析可知,S1键断开时,P0_5引脚输入高电平,S1键闭合,P0_5引脚输入低电平,因此,按键按下时,P0_5引脚产生一个下降沿,可以设置P0_5引脚输入的下降沿引起中断,同时需要使能相应的中断,包括总中断,端口P0的中断,P0_5引脚的中断,这样,按键按下一次,P0_5引脚就会产生一次中断。3.4.3案例:CC2530按键中断控制LED状态程序设计3.4.3案例:CC2530按键中断控制LED状程序设计(2)检测中断发生以控制LEDCC2530通过检测中断标志P0IFG的第5位是否为1来确定中断是否发生,每次发生中断,CC2530执行完当前的指令,会通过中断向量,来找到并执行中断服务程序,在程序的开始对中断次数计数(中断的次数就是按S1键的次数),在主程序中判断中断的次数,依据不同的次数来点亮不同颜色的LED。(3)设计主函数和子函数依据程序设计实现的功能,设计一个主函数和4个子函数。主函数调用子函数,并检测中断是否发生,发生中断则执行中断服务程序来处理中断。3.4.3案例:CC2530按键中断控制LED状态程序设计3.4.3案例:CC2530按键中断控制LED状【案例】程序代码#include<ioCC2530.h>#defineuintunsignedint#defineON1#defineOFF0#defineLED1P1_0#defineLED2P1_1#defineLED3P1_4#defineLED4P0_1#defineS1P0_5voidDelay(uint);voidled_init(void);voidkey_init(void);3.4.3案例:CC2530按键中断控制LED状态【案例】程序代码3.4.3案例:CC2530按键中断控制uintcounter=0;voidmain(void){led_init();key_init();switch(counter){case1:LED1=ON;LED2=OFF;LED3=OFF;LED4=OFF;Delay(2500);break;case2:LED2=OFF;LED2=ON;LED3=OFF;LED4=OFF;Delay(2500);break;case3:LED3=OFF;LED2=OFF;LED3=ON;LED4=OFF;Delay(2500);break;case4:LED4=OFF;LED2=OFF;LED3=OFF;LED4=ON;Delay(2500);break;}if(counter>=4)counter=0;while(1);}3.4.3案例:CC2530按键中断控制LED状态uintcounter=0;3.4.3案例:CC253voidDelay(uintn){uinti,j;for(i=0;i<n;i++){for(j=0;j<200;j++){asm("NOP");asm("NOP");asm("NOP");}}}3.4.3案例:CC2530按键中断控制LED状态voidDelay(uintn)3.4.3案例:CCvoidled_init(void){P1DIR|=0x13;P0DIR|=0x02;LED1=ON;LED2=ON;LED3=ON;LED4=ON;Delay(2500);}voidkey_init(void){
P0IFG&=0x00;P0INP&=~0x20;P0IEN|=0x20;IEN1|=0x20;PICTL|=0x01;EA=1;}3.4.3案例:CC2530按键中断控制LED状态voidled_init(void)voidkey_in#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){if(P0IFG>0){P0IFG=0;counter++;}P0IFG&=0x00;}3.4.3案例:CC2530按键中断控制LED状态#pragmavector=P0INT_VECTOR3.4教学目标3.5外设I/O理解外设I/O引脚的映射外设I/O如何使用相关寄存器名称及功能相关寄存器设置教学目标3.5外设I/O理解外设I/O引脚的映射相关寄存知识点1:外设I/O引脚映射提问:外设功能有哪些?分别由端口的哪些引脚实现?3.5外设I/O知识点1:外设I/O引脚映射3.5外设I/O3.5外设I/OCC2530的I/O引脚除了可以作为通用I/O引脚之外,还可以作为外设I/O引脚。所谓外设I/O引脚即CC2530的第二功能,例如串口、定时器、DMA等。外设I/O引脚功能选择是由寄存器来设置的。3.5外设I/OCC2530的I/O引脚除了可以作为通用3.5.1外设I/O引脚映射CC2530的外设功能有ADC、串口0(USART0)、串口1(USART1)、定时器1(TIMER1)、定时器3(TIMER3)、定时器4(TIMER4)、32KXOSC和DEBUG。3.5.1外设I/O引脚映射CC2530的外设功能有AD3.5.1外设I/O引脚映射端口引脚ADCUSART0USART1TIMER1TIMER3TIMER432KXOSCDEBUG-SPIUARTSPIUART---------12121212121212--P07A7
3
6A6
44
5A5C
RT
MI
RX
3
4A4SS
CT
MO
TX
2
3A3MO
TX
C
RT
1
2A2MI
RX
SS
CT
0
1A1
0A0
P17
MI
RX
1
6
MO
TX
0
5
MO
TX
C
RT
4
MI
RX
SS
CT
1
3
C
RT
0
2
SS
CT
0
1
1
1
0
2
0
P24
3
1Q1
2
Q2DC1
DD0T
0
返回3.5.1外设I/O引脚映射端口引脚ADCUSART0U3.5.2外设I/O寄存器外设控制寄存器PERCFG端口功能寄存器PxSEL模拟外设I/O配置寄存器APCFG端口2方向寄存器P2DIRx取值为0、1、23.5.2外设I/O寄存器外设控制寄存器PERCFGx取知识点2:外设控制寄存器PERCFG的作用、设置方法知识点3:端口功能寄存器PxSEL提问:该寄存器有什么作用?如何设置P2SEL?举例说明知识点4:模拟外设I/O配置寄存器的作用、设置方法知识点5:端口2方向寄存器P2DIR的作用、设置方法3.5.2外设I/O寄存器知识点2:外设控制寄存器PERCFG的作用、设置方法3.5.3.5.2外设I/O寄存器外设控制寄存器PERCFG功能:控制外设功能的备用位置,即选择串口和定时器使用哪个备用位置。3.5.2外设I/O寄存器外设控制寄存器PERCFG3.5.2外设I/O寄存器外设控制寄存器PERCFG3.5.2外设I/O寄存器外设控制寄存器PERCFG3.5.2外设I/O寄存器外设控制寄存器PERCFG例:串口硬件连接为串口0的备用位置1。思考:如何设置定时器3硬件连接为备用位置1?/*设置串口0为备用位置1*/PERCFG&=~0x01;11111110PERCFG&→取反0000000111011111PERCFG&→取反00100000PERCFG&=~0x20;3.5.2外设I/O寄存器外设控制寄存器PERCFG/*3.5.2外设I/O寄存器模拟外设I/O配置寄存器APCFG功能:控制P0端口各个引脚的模拟外设I/O功能的使能和禁止。设置方法:当相应位设置为“1”时,P0端口的对应引脚的模拟I/O功能使能,当相应位设置为“0”时,P0端口的对应引脚的模拟I/O功能禁用。用作ADC功能3.5.2外设I/O寄存器模拟外设I/O配置寄存器APC3.5.2外设I/O寄存器端口功能寄存器PxSEL功能:主要用于选择外设I/O或通用I/O功能。P2SEL可以设置P2_0~P2_4引脚功能,还可以设置外设功能的优先级别。3.5.2外设I/O寄存器端口功能寄存器PxSEL3.5.2
外设I/O寄存器端口功能寄存器P2SEL跳转跳转跳转跳转3.5.2外设I/O寄存器端口功能寄存器P2SEL跳转跳3.5.2外设I/O寄存器端口功能寄存器P2SEL例:设置P1端口串口0优先,即如果在P1端口同时连接串口0和串口1时,用户需要优先使用串口0。思考:如何设置定时器3优先?/*设置串口0优先级别*/P2SEL&=~0x40;10111111P2SEL&→取反0100000000100000P2SEL|P2SEL|=0x20;3.5.2外设I/O寄存器端口功能寄存器P2SEL/*设3.5.2外设I/O寄存器模拟外设I/O配置寄存器APCFG3.5.2外设I/O寄存器模拟外设I/O配置寄存器APC3.5.2外设I/O寄存器模拟外设I/O配置寄存器APCFG例:设置P0_7为模拟I/O功能。思考:如何禁止P0_6的模拟I/O功能?/*P0_7模拟I/O功能使能*/APCFG|=0x80;10000000APCFG|10111111APCFG&→取反01000000APCFG&=~0x40;3.5.2外设I/O寄存器模拟外设I/O配置寄存器APC3.5.2外设I/O寄存器端口2方向寄存器P2DIR功能:设置端口P2_0~P2_4输出/输入方向,第6位和第7位还可以用来决定串口0、串口1和定时器1的优先级别。3.5.2外设I/O寄存器端口2方向寄存器P2DIR4.4.2外设I/O寄存器端口2方向寄存器P2DIR00第1优先级:USART0第2优先级:USART1第3优先级:定时器101第1优先级:USART1第2优先级:USART0第3优先级:定时器110第1优先级:定时器1通道0-1第2优先级:USART1第3优先级:USART0第4优先级:定时器1通道2-311第1优先级:定时器1通道2-3第2优先级:USART0第3优先级:USART1第4优先级:定时器1通道0-14.4.2外设I/O寄存器端口2方向寄存器P2DIR03.5.2外设I/O寄存器端口2方向寄存器P2DIR设置串口0的优先级别最高思考:如何设置串口1的优先级级别最高?/*设置串口0为第1优先级别*/P2DIR&=~0xC0;00111111P2DIR&→取反1100000001000000P2DIR|P2DIR&=0x40;3.5.2外设I/O寄存器端口2方向寄存器P2DIR/*教学目标3.6振荡器和时钟设置理解CC2530振荡器的分类及作用振荡器和时钟的关系时钟如何使用相关寄存器名称及功能相关寄存器设置问题引入
日常生活中,我们使用钟表作为时间参考,CC2530系统中的各个部件要协调工作使用什么作为参考呢?教学目标3.6振荡器和时钟设置理解CC2530振荡器的分3.6振荡器和时钟设置知识点1:CC2530振荡器提问:CC2530振荡器有哪些?分别有什么作用?知识点2:系统时钟提问:系统时钟如何获得?可以使用哪些振荡器?知识点3:时钟配置提问1:时钟控制寄存器CLKCONCMD有什么作用?如何设置?举例说明提问2:时钟状态控制寄存器CLKCONSTA有什么作用?如何设置?举例说明3.6振荡器和时钟设置知识点1:CC2530振荡器3.6振荡器和时钟设置设备内部有一个内部系统时钟或主时钟,为CC2530提供精准的时钟设置。系统时钟或主时钟是由CC2530的振荡器来提供。3.6振荡器和时钟设置设备内部有一个内部系统时钟或主时钟3.6.1振荡器高频振荡器低频振荡器3.6.1振荡器高频振荡器3.6.1振荡器高频振荡器包括:16MHz内部RC振荡器32MHz外部晶振高频振荡器功能为CC2530的主时钟源提供振荡源。当使用32MHz的外部晶振作为主时钟源时,在设备刚启动时需要运行在16MHz的内部RC振荡器。原因:32MHz外部晶振启动时间对一些应用程序来说可能比较长,因此需要设备运行在16MHzRC振荡器,直到32MHz晶振稳定之后才使用外部晶振作为振荡器。注意:由于16MHz内部RC振荡器没有32MHz外部晶振精确,所以不能用于RF收发器操作。注意3.6.1振荡器高频振荡器包括:当使用32MHz的外部晶3.6.1振荡器低频振荡器包括:32KHz内部RC振荡器32KHz外部晶振低频振荡器功能为需要时间准确的系统提供一个稳定的时钟信号。芯片复位之后默认使能32KHz的RC振荡器,并作为32KHz的时钟源。RC振荡器能耗小,但精度低。24X60X60X1/1000000()X10=0.864秒单位PPM,1PPM代表百万分之一(即1秒的误差是1/1000000秒)。例:若晶振的精度是10PPM,计算出一天的时间误差有多少秒?32.753KHz32.768KHz为芯片时钟源,如应用于睡眠定时器或看门狗3.6.1振荡器低频振荡器包括:24X60X60X1/13.6.2时钟设置系统时钟是从所选的主时钟源获得。主时钟源可以通过寄存器的设置来选择使用32MHz的外部晶振或者16MHz的内部RC振荡器。时钟控制命令寄存器CLKCONCMD时钟控制状态寄存器CLKCONSTA但是当使用RF收发器时,系统时钟必须选择高速并且稳定的32MHz外部晶振。3.6.2时钟设置系统时钟是从所选的主时钟源获得。主时钟3.6.2时钟设置时钟控制命令寄存器CLKCONCMD功能:用于选择32KHz时钟振荡器、选择系统主时钟的时钟源、定时器标记输出设置和时钟速度设置。3.6.2时钟设置时钟控制命令寄存器CLKCONCMD3.6.2时钟设置时钟控制命令寄存器CLKCONCMD3.6.2时钟设置时钟控制命令寄存器CLKCONCMD3.6.2时钟设置时钟控制命令寄存器CLKCONCMD选择使用32MHz的外部晶振作为系统时钟源。CLKCONCMD&=~0x40;10111111CLKCONCMD&→取反010000003.6.2时钟设置时钟控制命令寄存器CLKCONCMDC3.6.2时钟设置时钟控制状态寄存器CLKCONSTA功能:获得当前系统时钟的状态。3.6.2时钟设置时钟控制状态寄存器CLKCONSTA3.6.2时钟设置时钟控制状态寄存器CLKCONSTARRRR3.6.2时钟设置时钟控制状态寄存器CLKCONSTAR3.6.2时钟设置时钟控制状态寄存器CLKCONSTA改变CLKCONCMD.OSC位并不能立即导致系统时钟源的改变。当CLKCONSTA.OSC = CLKCONCMD.OSC时时钟源的改变才会发挥作用。时钟控制状态寄存器CLKCONSTA和时钟控制命令寄存器CLKCONCMD一起设置系统时钟源为32MHz外部晶振。CLKCONCMD&=~0x40;判断32MHz晶振是否稳定w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南机电职业技术学院单招职业技能测试题库及参考答案详解一套
- 2026年河北青年管理干部学院单招职业倾向性考试题库含答案详解
- 2026年湖南外国语职业学院单招综合素质考试题库及参考答案详解
- 四川省成都市蓉城名校联盟2024-2025学年高二上学期期中考试政治考试政治参考答案及评分标准
- 云南税务面试题目及答案
- 安全攻防面试题及答案
- 2025~2026学年济南天桥区泺口实验学校九年级上学期12月份物理考试试卷以及答案
- 2019年7月国开电大行管专科《监督学》期末纸质考试试题及答案
- 质量检验员培训
- 2025年台州市中医院卫技高层次人才公开招聘备考题库及参考答案详解
- GB/T 70.3-2023降低承载能力内六角沉头螺钉
- 2023版中国近现代史纲要课件:07第七专题 星星之火可以燎原
- 通知书产品升级通知怎么写
- 气管插管术 气管插管术
- 大学《实验诊断学》实验八:病例分析培训课件
- GB/T 28400-2012钕镁合金
- 多维阅读第8级Moon Mouse 明星老鼠的秘密
- 骨髓增生异常综合症课件整理
- 心肌梗死院前急救课件
- 双升基本知识-信号
- 六氟磷酸锂行业深度研究报告
评论
0/150
提交评论