文章目录
四,定时/计数器
C/T 都是
寄存器在检测到下跳沿(1→0)时加一,保证给出的外部输入信号在变化前至少被采样一次。
上图:C/T 决定是计数还是定时,控制信号决定是否开启。
加一计数器是 16 位,有两个 8 位寄存器 THx 和 TLx 组成。(TxL,TxH 也行)
4.1. 定时/计数器的相关寄存器
定时器工作方式控制寄存器 TMOD ,定时器控制寄存器 TCON ,辅助寄存器 AUXR ,中断和时钟输出寄存器 INT_CLKO ,定时器3和定时器4 的工作方式寄存器 T4T3M。
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
TMOD | 89H | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 | 00000000B |
TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | 00000000B |
AUXR | 8EH | T0x12 | T1x12 | UART_M0x6 | TR2 | T2_C/T | T2x12 | EXTRAM | S1ST2 | 00000000B |
INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | - | T2CLKO | T1CLKO | T0CLKO | X000X000B |
T4T3M | D1H | TR4 | T4_C/T | T4x12 | T4CLKO | TR3 | T3_C/T | T3x12 | T3CLKO | 00000000B |
4.1.1 定时器工作方式控制寄存器 TMOD
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
TMOD | 89H | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 | 00000000B |
D3~D0 为 T0 的控制字段。D7~D4 为 T1 的控制字段。
① GATE:选通控制。
- GATE=1 时:当 P3.3(INT1) 或 P3.2(INT0) 位高电平 且 TR1 或 TR0 置1,T1/T0 才开始计数(可用于脉宽测量)。
- GATE=0 时:只要TR1 或 TR0 置1,T1/T0 就开始计数。
② C/T:功能选择位。
- C/T=1 时,计数功能,对 T0 或 T1 引脚的负跳变进行计数。
- C/T=0 时,定时功能,对时钟周期或其12分频进行计数。
③ M1/M0:方式选择位。
M1 | M0 | 工作方式 | 功能说明 |
---|---|---|---|
0 | 0 | 0 | 16位自动装载的定时器/计数器 |
0 | 1 | 1 | 16位定时器/计数器 |
1 | 0 | 2 | 可自动装入的8位计数器 |
1 | 1 | 3 | T1:停止计数,T0:不可屏蔽中断的16位自动装载的定时/计数器(不需要EA,只需要ET0=1,就能打开中断) |
注意:
- T0 的模式3:不可屏蔽中断的16位自动装载的定时/计数器,不需要EA,只需要ET0=1,就能打开中断;而且是最高优先级的中断,不能被其他任何中断所打断,清0 ET0 也不能关闭中断。
- TMOD 只能字节寻址。
4.1.2 定时器控制寄存器 TCON
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | 00000000B |
① TF1/0:T1/0 溢出标志位。
② TR1/0:T1/0 运行控制位。TRx=1 启动计数器,TRx=0 关闭。
其余0~3位 与 外部中断有关(见中断)。
4.1.3 辅助寄存器 AUXR
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
AUXR | 8EH | T0x12 | T1x12 | UART_M0x6 | TR2 | T2_C/T | T2x12 | EXTRAM | S1ST2 | 00000000B |
设置定时器的速度,T2 的功能,串口 UART 的波特率控制。
IAP15W4K58S4 定时器复位后是 12分频,但指令执行仍是1T的速度。设置 AUXR 实现真正的1T速度。
① T0x12:T0 速度控制位。
- 0:12分频
- 1:不分频,1T
② T1x12:T1 速度控制位。
③ TR2:T2 运行控制位。
④ T2_C/T:T2 功能选择位。
⑤ T2x12:T2 速度控制位。
⑥ EXTRAM:是否允许使用内部1792字节的扩展 RAM。
注意:T1 和 T2 可用于 UART串口通信的 波特率发生器,Tx12决定是否12分频.
4.1.4 中断和时钟输出寄存器 INT_CLKO
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | (SYSCKO_S2) | T2CLKO | T1CLKO | T0CLKO | X000X000B |
TxCLKO 是与时钟输出有关的。
4.1.5 定时器3和定时器4 的工作方式寄存器 T4T3M
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
T4T3M | D1H | TR4 | T4_C/T | T4x12 | T4CLKO | TR3 | T3_C/T | T3x12 | T3CLKO | 00000000B |
① TR4:T4 运行控制位。
② T4_C/T:T4 功能选择位。
③ T4x12:T4 速度控制位。
④ T4CLKO:是否允许该时钟输出
- 1:允许将 P0.6 脚配置为 T4 的时钟输出,输出频率=T4溢出率/2.
- 0:不允许T4作为时钟输出。
⑤ TR3:T3 运行控制位。
⑥ T3_C/T:T3 功能选择位。
⑦ T3x12:T3 速度控制位。
⑧ T3CLKO:是否允许该时钟输出
- 1:允许将 P0.4 脚配置为 T3 的时钟输出,输出频率=T3溢出率/2.
- 0:不允许T3作为时钟输出。
4.2 定时器的工作方式
以 T0 为例:
4.2.1 工作方式0
T0 有两个隐藏的寄存器 RL_TH0 和 RL_TL0 分别与 TH0,TL0
共有同一个地址。TR0=0时,对TL0写入的值会同时写入RL_TL0。TR0=1时,不会同时写入。
溢出时不光会置位TF0,还会将[RL_TL0,RL_TH0]自动装入[TL0,TH0]。
于是实现了16位自动重载。
T0CLKO=1 时,T1/P3.5 引脚配置为 T0 的时钟输出 T0CLKO。
T0 的工作方式0 已经能实现方式1 和方式2 的所有功能,所以不做介绍了。
其余计时器功能类似 T0。
4.3 定时/计数器量程扩展
4.3.1 最大量程
晶振频率为11.0592 MHZ 时:
单位时间 Tu = 12/晶振频率 = 12/11059200 s
定时时间 Tc = x*Tu
装入初值:N = 2^16 - Tc/Tu
12分频时的最大量程:
T = 2^16 * 12 / 11059200 s = 71.11s
4.3.2 扩展
- 软件扩展
… - 硬件扩展
外接通用定时器芯片,或将自身的两个定时器进行串联拓展(一个工作于定时,一个工作于计数)。
4.4 定时/计数器初始化编程要点
① 设置工作方式,将控制字写入TMOD寄存器(对于T0和T1)或AUXR寄存器(对于T2)或T4T3M寄存器(对于T3和T4)。
② 设置分频方式,即设置Txx12控制位。默认的情况是12分频(兼容传统8051单片机),如果使用传统8051单片机模式,可以不进行设置。
③ 计算定时/计数初值,并将其装入TLx、THx寄存器。
④ 置位ETx和EA允许定时/计数器中断(如果需要)。
⑤ 置位TRx以启动定时/计数。
4.5 可编程时钟输出模块
IAP15W4K58S4 提供 6 路可编程时钟输出功能:
MCLKO——P5.4(内部RC 时钟频率<12MHZ 时才能正常输出)
T0CLKO——P3.5
T1CLKO——P3.4
T2CLKO——P3.0
T3CLKO——P0.4
T4CLKO——P0.5
4.5.1 可编程时钟输出的相关寄存器
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
CLK_DIV | 97H | MCKO_S1 | MCKO_S0 | ADRJ | TX_RX | - | CLKS2 | CLKS1 | CLKS0 | 0000X000B |
INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | - | T2CLKO | T1CLKO | T0CLKO | X000X000B |
T4T3M | D1H | TR4 | T4_C/T | T4x12 | T4CLKO | TR3 | T3_C/T | T3x12 | T3CLKO | 00000000B |
4.5.2 主时钟输出
单片机的主时钟可以是内部高精度 RC 时钟,也可以是外部输入的时钟或外部晶振时钟。
MCKO_S1,MCKO_S0:主时钟的输出控制:
MCKO_S1 | MCKO_S0 | 主时钟的输出频率 |
---|---|---|
0 | 0 | 无主时钟输出 |
0 | 1 | 主时钟输出频率=MCLK |
1 | 0 | 主时钟输出频率=MCLK/2 |
1 | 1 | 主时钟输出频率=MCLK/4 |
4.5.3 TxCLKO(x=0,1,2,3,4)输出
使 TxCLKO=1 。
输出频率为 定时/计数器的溢出频率/2。
需要工作在自动重装模式,不允许定时器中断,避免反复中断。
五,数据通信
5.1 串行通信
5.1.1 UART
5.1.2 RS485 通信接口
5.1.3 SPI 通信接口
IAP15W4K58S4集成了 串行外设接口(SPI),SPI 接口有两种操作模式:主模式 和 从模式。
主模式支持 3Mbps 的速率;从模式时速度无法太快,速度在 SYSclk/8 以内较好。
SPI 的核心是一个8位 移位寄存器 和 数据缓冲器,数据可以同时发送和接收。
对于主模式:发送一个字节,只需把这个数据写到 SPIDAT 寄存器中。
从模式:必须在 /SS信号变为有效并接收到合适的时钟信号后才能进行数据传输。
任何 SPI 控制寄存器的改变将复位 SPI 接口,并清除相关寄存器。
(1)SPI 接口的信号
SPI 接口由 MOSI(与P1.3共用),MISO(与P1.4共用),SCLK(与P1.5共用),/SS(与P1.2共用) 4根信号线构成。SPI引脚可以切换。
① MOSI(Master Out Slave In,主出从入):
- 多个从机共享一根 MOSI 信号线。
- 在时钟边界的前半周期,主机将数据放在MOSI信号线上,从机在该边界处获取该数据。
② MISO(Master In Slave Out,主入从出):
- 多个从机共享一根 MOSI 信号线,
- 主机与某一从机通信时,其他从机应将 MISO 置为高阻态。
③ SCKLK(SPI Clock,串行时钟信号):
- 串行时钟信号是主器件的输出和从器件的输入,用于同步筑起件和从器件之间 MOSI 和 MISO 线上的串行数据传输。
- 当主器件启动一次数据传输时,自动产生8个SCLK时钟周期信号给从机。在SCLK的每个跳变处(上升沿或下降沿)移出一位数据。
- 一次数据传输可以传输一个字节的数据 。
注意:
- SCLK、MOSI和MISO通常用于将两个或更多个SPI器件连接在一起
- 数据通过MOSI由主机传送到从机,通过MISO由从机传送到主机。
- SCLK信号在主模式时为输出,在从模式时为输入。
- 如果SPI接口被禁止,即特殊功能寄存器SPCTL中的SPEN=0(复位值),这些管脚都可作为I/O口使用。
④ /SS(Slave Select,从机选择信号):
- 这是一个输入信号。主器件用它来选择处于从模式的SPI模块。
- 在主模式下,SPI接口只能有一个主机,不存在主机选择问题。在该模式下/SS=不是必须的。主模式下通常将主机的/SS引脚通过10kΩ的电阻上拉高电平。每一个从机的/SS接主机的I/O口,由主机控制电平高低,以便主机选择从机。
- 在从模式下,不论发送还是接收,/SS信号必须有效。因此在一次数据传输开始之前必须将/SS拉为低电平。SPI主机可以使用I/O口选择一个SPI器件作为当前的从机。
- SPI从器件通过其/SS脚确定是否被选择。如果满足下面的条件之一,就被忽略:
- 如果SPI功能被禁止,即SPEN位为0(复位值);
- 如果SPI配置为主机,即MSTR位为1,并且P1.4配置为输出(P1M0.4=0、P1M1.4=1);
- 如果/SS脚被忽略,即SSIG位为1,该脚配置用于I/O口功能。
- 注:即使SPI被配置为主机(MSTR=1),仍然可以通过拉低/SS脚配置为从机(如果P1.4配置为输入且SSIG=0)。要使能该特性,应当置位SPIF(SPSTAT.7)
(2) SPI 相关的特殊功能寄存器
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
SPICTL | CEH | SSIG | SPEN | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 | 00000100B |
SPSTAT | CDH | SPIF | WCOL | - | - | - | - | - | - | 00XXXXXXB |
SPIDAT | CFH | 00000000B |
① SPI 控制寄存器(SPCTL):
- SSIG:/SS 引脚忽略控制位。
- SSIG=0:由/SS 脚用于确定器件为主机还是从机。
- SSIG=1:由 MSTR 位确定器件为主机还是从机。
- SPEN:SPI 使能位。
- SPEN=0,SPI 被禁止,所有SPI 管脚作为I/O口。
- SPEN=1,SPI 使能
- DORD:设定数据发送和接收的位顺序
- DORD=0,数据字的最高位(MSB)最先传送。
- DORD=1,数据字的最低位(LSB)最先传送。
- MSTR:SPI 主模式选择位。
- CPOL:SPI 时钟极性。
- CPOL=0,SPI 空闲时 SCK=0.SCK的前时钟沿为上升沿而后沿为下降沿。
- CPOL=1,SPI 空闲时 SCK=1.SCK的前时钟沿为下降沿而后沿为上升沿。
- CPHA:SPI 时钟相位选择控制位。
- CPHA=0:
- CPHA=1:
- SPR1,SPR0:SPI 时钟速率选择控制位:
SPR1 | SPR0 | 时钟(SCLK) |
---|---|---|
0 | 0 | CPU_CLK/4 |
0 | 1 | CPU_CLK/8 |
1 | 0 | CPU_CLK/16 |
1 | 1 | CPU_CLK/32 |
CPU_CLK 是CPU时钟。
② SPI 状态寄存器(SPSTAT)
- SPIF:SPI 传输完成标志
- 一次传输完成,SPIF被置位,(EA=1&&ESPi=1时)申请中断。
- 当SPI处于主模式且 SSIG=0 时,若 /SS 为输入并被驱动为低电平,SPIF也将被置位,表示“模式改变” 。
- WCOL:SPI 写冲突标志:
- 当一个数据正在传输时又向数据寄存器SPDAT 写如数据时,WCOL将被置位。
- WCOL 通过软件写入 1 而清0.
③ SPI 数据寄存器(SPDAT)
(3)SPI 接口的数据通信方式
单主机-单从机,双器件方式(互为主/从机),单主机-多从机
① 单主-单从:
- 在图中,从机的SSIG(SPCTL.7)为0,用于选择从机。
- SPI主机可使用任何端口位(包括P1.4//SS)来控制从机的/SS脚。
- 主机SPI与从机SPI的8位移位寄存器连接成一个循环的16位移位寄存器。
当主机程序向SPDAT写入一个字节时,立即启动一个连续的8位移位通信过程:主机的SCLK引脚向从机的SCLK引脚发出一串脉冲,在这串脉冲的驱动下,主机SPI的8位移位寄存器中的数据移到了从机SPI的8位移位寄存器中。与此同时,从机SPI的8位移位寄存器中的数据移到了主机SPI的8位移位寄存器中。由此,主机既可向从机发送数据,又可读从机中的数据。
② 双器件模式
- 在图中,两个器件可以互为主从。
- 当没有发生SPI操作时,两个器件都可配置为主机(MSTR=1),将SSIG清零并将P1.4(/SS)配置为准双向模式。
- 当其中一个器件启动传输时,可将P1.4配置为输出并驱动为低电平,这样就强制另一个器件变为从机。
- 双方初始化时将自己设置成忽略/SS脚的SPI从模式。当一方要主动发送数据时,先检测/SS脚的电平,如果/SS脚是高电平,就将自己设置成忽略/SS脚的主模式。
- 通信双方平时将SPI置成没有被选中的从模式。在该模式下,MISO、MOSI、SCLK均为输入,当多个MCU的SPI接口以此模式并联时不会发生总线冲突。这种特性在互为主从、一主多从等应用中很有用。
- 注意,互为主从模式时,双方的SPI速率必须相同。如果使用外部晶体振荡器,双方的晶体频率也要相同
③ 单注-多从
- 在图中,从机的SSIG(SPCTL.7)为0,从机通过对应的/SS信号被选中。SPI主机可使用任何端口位(包括P1.4)来控制从机的/SS。
(4)主机和从机的选择
IAP15W4K58S4单片机进行SPI通信时,主机和从机的选择由SPEN、SSIG、引脚(P1.2)和MSTR联合控制。主机和从机的选择如表所示。
(5)SPI 数据通信过程
- 在SPI通信中,数据传输总是由主机启动的。如果SPI使能(SPEN=1),主机对SPI数据寄存器的写操作将启动SPI时钟发生器和数据的传输。在数据写入SPDAT之后的半个到一个SPI位时间后,数据将出现在MOSI引脚。
- 需要注意的是,主机可以通过将对应器件的/SS引脚驱动为低电平实现与之通信。写入主机SPDAT寄存器的数据从MOSI引脚移出发送到从机的MOSI引脚。同时,从机SPDAT寄存器的数据从MISO引脚移出发送到主机的MISO引脚。
- 传输完一个字节后,SPI 时钟发生器停止,传输完成标志(SPIF)置位并产生一个中断(如果SPI中断使能)。
- 主机和从机CPU的两个移位寄存器可以看作是一个16位循环移位寄存器。当数据从主机移位传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主机和从机的数据相互交换。
(6)写冲突
- SPI在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能将新的数据写入移位寄存器。
- 当发送过程中对数据寄存器进行写操作时,WCOL位将置位以指示数据冲突。在这种情况下,当前发送的数据继续发送,而新写入的数据将丢失。
- 当对主机或从机进行写冲突检测时,主机发生写冲突的情况是很罕见的,因为主机拥有数据传输的完全控制权。但从机有可能发生写冲突,因为当主机启动传输时,从机无法进行控制。
- 接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以进行下一个数据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据将丢失。
- WCOL可通过软件向其写入“1”清0
(7)数据格式
-
时钟相位控制位CPHA用于设置采样和改变数据的时钟边沿。
-
时钟极性控制位CPOL用于设置时钟极性。
-
不同的CPHA,主机和从机对应的数据格式如图所示。
- CPHA=0时SPI从机传输格式 :
- CPHA=1时SPI从机传输格式 :
- CPHA=0时SPI主机传输格式
- CPHA=1时SPI主机传输格式
- CPHA=0时SPI从机传输格式 :
5.1.4 I²C 通信接口
5.2 并行通信
六,A/D 转换,比较器
根据转换的工作原理不同,模数转换器可以分为计数-比较式、逐次逼近式和双斜率积分式。
…
6.1 IAP15W4K58S4 集成的A/D模块结构与相关寄存器
IAP15W4K58S4 单片机集成 8 路 10 位高速电压输入型模数转换器(ADC)(逐次比较型),速度可达 300 kHz。
ADC 输入通道与 P1 口复用,上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为ADC功能,不作为ADC使用的口可继续作为I/O口使用。
结构:
ADC 控制寄存器:
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
ADC_CONTR | BCH | ADC_POWER | SPEED1 | SPEED0 | ASC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 | 00000000B |
- CHS2~CHS0 :模拟多路开关的选择控制
- SPEED1 和 SPEED0:ADC 的转换速度控制
- 使用 ADC 前,应先给 ADC 上电,即 ADC_POWER=1。
- A/D 转换完成后,ADC_FLAG=1,EA=1 && EADC=1 时申请中断。
- 参考电压源:一般是输入工作电压 Vcc ,若 Vcc 不稳定,则在 8 路 A/D 转换通道外接一个稳定的参考电压源,计算此时的实际参考电压——工作电压 Vcc,再计算其他几路 A/D 转换通道的电压。
6.2 ADC 有关的特殊功能寄存器
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
ADC_CONTR | BCH | ADC_POWER | SPEED1 | SPEED0 | ASC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 | 00000000B |
P1ASF | 9DH | P17ASF | P16ASF | P15ASF | P14ASF | P13ASF | P12ASF | P11ASF | P10ASF | 00000000B |
ADC_RES | BDH | 00000000B | ||||||||
ADC_RESL | BEH | 00000000B | ||||||||
CLK_DIV | 97H | MCKO_S1 | MCKO_S0 | ADRJ | TX_RX | - | CLKS2 | CLKS1 | CLKS0 | 0000X000B |
6.2.1 P1 口模拟功能控制寄存器 P1ASF
- 若要使用相应口的模拟功能,需将相应位置1。
- 不能位寻址。
- 若 P1ASF =0,则对内部CPU工作电压进行转换。
6.2.2 ADC 控制寄存器 ADC_CONTR
ADC 控制寄存器:
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
ADC_CONTR | BCH | ADC_POWER | SPEED1 | SPEED0 | ADC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 | 00000000B |
① ADC_POWER:ADC 电源控制位
② SPEED1,SPEED0:ADC 转换速度控制位:
SPEED1 | SPEED0 | A/D 转换所需时间 |
---|---|---|
0 | 0 | 540个时钟周期转换一次,可达到10位精度 |
0 | 1 | 360个时钟周期转换一次,可达到10位精度 |
1 | 0 | 180个时钟周期转换一次,可达到10位精度 |
1 | 1 | 90个时钟周期转换一次,CPU 工作频率21MHz时,约为 30万次/s,9位精度 |
IAP15W4K58S4单片机A/D转换模块的时钟是外部晶体时钟或内部RC振荡器所产生的系统时钟,不是CLK_DIV分频过后供给CPU工作的时钟。这样转换快而CPU慢,降低功耗。
所以注意:设置 ADC——CONTR 控制寄存器后,要加4个空操作延时才能正确读到ADC_CONTR寄存器的值。(即4个CPU时钟才能被设置进ADC_CONTR)
③ ADC_FLAG:A/D 转换结束标志位。
- ADC_FLAG=1,EA=1 && EADC=1 时申请中断。
- 一定记得软件清0 。
④ ADC_START:A/D 转换启动控制位。
- ADC_START=1,开始转换;转换结束后 ADC_START=0 。
- 每次启动重新置位。
⑤CHS2,CHS1,CHS0:模拟输入通道选择。
CHS2 | CHS1 | CHS0 | 模拟输入通道选择 |
---|---|---|---|
0 | 0 | 0 | 选择 P1.0 作为 A/D 输入来用 |
0 | 0 | 1 | 选择 P1.1 作为 A/D 输入来用 |
0 | 1 | 0 | 选择 P1.2 作为 A/D 输入来用 |
0 | 1 | 1 | 选择 P1.3 作为 A/D 输入来用 |
1 | 0 | 0 | 选择 P1.4 作为 A/D 输入来用 |
1 | 0 | 1 | 选择 P1.5 作为 A/D 输入来用 |
1 | 1 | 0 | 选择 P1.6 作为 A/D 输入来用 |
1 | 1 | 1 | 选择 P1.7 作为 A/D 输入来用 |
6.2.3 A/D 转换结果存储格式控制(CLK_DIV中的ADRJ位)及A/D转换结果存储器 ADC_RES,ADC_RESL
① ADRJ:
-
ADRJ=0 时,ADC_RES[7:0] 存放 高8位 ADC结果,ADC_RESL[1:0] 存放 低2位 ADC结果,适合于取 8位转换精度。
-
ADRJ=1 时,ADC_RES[1:0] 存放 高2位 ADC结果,ADC_RESL[7:0] 存放 低8位 ADC结果,适合于取 10位转换精度。
取 10 位结果:(ADC_RES[7:0],ADC_RESL[1:0]) = 1024×Vin/Vcc 取8位结果 :ADC_RES[7:0] = 256×Vin / Vcc
6.2.4 中断允许位:IE 中的 EADC 位。
6.3 ADC 编程要点:
① 打开ADC电源,第一次使用时要打开内部模拟电源(设置ADC_CONTR)。
② 适当延时,等内部模拟电源稳定。一般延时1ms以内即可。
③ 设置P1口中的相应口线作为A/D转换通道(设置P1ASF寄存器)。
④ 选择ADC通道(设置ADC_CONTR中的CHS2~CHS0)。
⑤ 根据需要设置转换结果存储格式(设置CLK_DIV中的ADRJ位)
⑥ 查询A/D转换结束标志ADC_FLAG,判断A/D转换是否完成,若完成,则读出结果(结果保存在ADC_RES和ADC_RESL寄存器中),并进行数据处理。
⑦ 若采用中断方式,还需进行中断设置(EADC置1,EA置1)。
在中断服务程序中读取ADC转换结果,并将ADC中断请求标志ADC_FLAG清零
注意:
读取转换结果注意:
如果是多通道模拟量进行转换,则更换A/D转换通道后要适当延时,使输入电压稳定,延时量取20μs~200μs即可,与输入电压源的内阻有关。
如果输入电压信号源的内阻在10K以下,可不加延时。
如果是单通道模拟量转换,则不需要更换A/D转换通道,也就不需要加延时
6.4 IAP15W4K58S4 集成的比较器模块
IAP15W4K58S4 集成了 1 路比较器。可用于系统的掉电检测等功能。
。。。
七,PCA 与 PWM
IAP15W4K58S4 单片机集成了 两路可编程计数器阵列(PCA)模块。可用于软件定时器,外部脉冲的捕捉,高速输出以及脉宽调制(PWM)输出。
7.1 PCA 模块的结构
一个16位定时器与2个16位的捕获/比较模块与之相连。
捕获/比较/脉宽调制(CCP) 通道可以在三个地方切换(由CCP_S1 和 CCP_S0):
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
AUXR1 | A2H | S1_S1 | S1_S0 | CCP_S1 | CCP_S0 | SPI_S1 | SPI_S0 | - | DPS | 00000000B |
CCP_S1 | CCP_S0 | 切换引脚 |
---|---|---|
0 | 0 | CCP在 [P1.1/CCP0,P1.0/CCP1] |
0 | 1 | CCP在 [P3.5/CCP0_2,P3.6/CCP1_2] |
1 | 0 | CCP在 [P2.5/CCP0_3,P2.6/CCP1_3] |
1 | 1 | 无效 |
每个模块可编程工作在 4 中模式:上升/下降沿捕获器,软件定时器,高速输出 或 可调制脉冲输出。
这两个模块以 一个16位 PCA 定时/计数器 为公共时间基准。
16位 PCA定时/计数器:
CH,CL 的内容是自动递增计数的16位 PCA 定时器的值。
CMOD 的 ECF 位用于中断控制(=1使中断)。
PCA 的中断系统:
7.2 PCA 模块的特殊功能寄存器
寄存器 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
---|---|---|---|---|---|---|---|---|---|---|
CMOD | D9H | CIDL | - | - | - | CPS2 | CPS1 | CPS0 | ECF | 0xxx0000B |
CCON | D8H | CF | CR | - | - | - | - | CCF1 | CCF0 | 00xxxx00B |
CCAPM0 | DAH | - | ECOM0 | EAPP0 | CAPN0 | MAT0 | TOG0 | PWM0 | ECCF0 | x0000000B |
CCAPM1 | DBH | - | ECOM1 | EAPP1 | CAPN1 | MAT1 | TOG1 | PWM1 | ECCF1 | x0000000B |
CL | E9H | 00000000B | ||||||||
CH | F9H | 00000000B | ||||||||
CCAP0L | EAH | 00000000B | ||||||||
CCAP0H | FAH | 00000000B | ||||||||
CCAP1L | EBH | 00000000B | ||||||||
CCAP1H | FBH | 00000000B | ||||||||
PCA_PWM0 | F2H | EBS0_1 | EBS0_0 | XCCAP0H[1:0] | XCCAP0H[1:0] | XCCAP0L[1:0] | XCCAP0L[1:0] | EPC0H | EPC0L | 00xxxx00B |
PCA_PWM1 | F3H | EBS1_1 | EBS1_0 | XCCAP1H[1:0] | XCCAP1H[1:0] | XCCAP1L[1:0] | XCCAP1L[1:0] | EPC1H | EPC1L | 00xxxx00B |
7.2.1 PCA 工作模式寄存器 CMOD
① CIDL:空闲模式下是否停止 PCA 计数的控制位。
- CIDL=0:空闲模式下 PCA 计数器继续工作。
- CIDL=1:空闲模式下 PCA 计数器停止计数。
② CPS2,CPS1 和 CPS0 位选择 PCA计数/定时器的时钟源。
CPS2 | CPS1 | CPS0 | PCA 时钟源输入选择 |
---|---|---|---|
0 | 0 | 0 | 系统时钟/12 |
0 | 0 | 1 | 系统时钟/2 |
0 | 1 | 0 | 系统时钟/T0溢出时钟 |
0 | 1 | 1 | 系统时钟/ECI/P1.2(或P2.4或P3.4)脚输入的外部时钟(最大速率=SYSclk/2) |
1 | 0 | 0 | 系统时钟 |
1 | 0 | 1 | 系统时钟/4 |
1 | 1 | 0 | 系统时钟/6 |
1 | 1 | 1 | 系统时钟/8 |
注:
- T0 工作在 1T 方式,可以达到一个时钟就溢出,从而达到最高频率——系统时钟(CPU的工作时钟SYSclk)。
- 所以通过改变T0溢出率,实现可调频率的 PWM 输出,T0 可对系统时钟进行 1~256 级分频。?
③ ECF:PCA 计数器溢出中断使能位。
7.2.2 PCA 控制寄存器(CCON)
① CF:PCA 计数器 溢出标志位,只能软件清0。
② CR:PCA 计数器 的运行控制位。
- CR=1:启动PCA计数器计数。
- CR=0:关闭PCA计数器。
③ CCF1/CCF0:PCA 模块的中断标志,当发生匹配或捕获时由硬件置位。必须由软件清0。
7.2.3 PCA 比较/捕获模式寄存器 CCAPMn
用于设定 PCA 模块的工作模式。
① ECOMn:允许比较器功能控制器。ECOMn=1时,允许比较器功能。
② CAPPn:正捕获控制位。CAPPn=1 时,允许 CCPn 引脚的上升沿捕获。
③ CAPNn:负捕获控制位。CAPNn=1 时,允许 CCPn 引脚的下降沿捕获。
可以两者都捕获。
④ MATn:匹配控制位。
- MATn=1 时,则 PCA 计数值与模块的比较/捕获 寄存器的值匹配 ([CH,CL]==[CCAPnH,CCAPnL]) 时,将置位 CCON寄存器的中断标志位 CCFn。
⑤TOGn:翻转控制位。
- TOGn=1 时,PCA 工作于高速输出模式,PCA 计数器的值与模块的比较/捕获寄存器的值相匹配时,使CCPn脚 发生翻转。
⑥ PWMn:脉宽调制模式,当PWM=1时,CCPn 脚用作脉宽调制输出。
⑦ ECCFn:使能 CCFn 中断。
PCA 模块的工作模式设定:
ECOMn | CAPPn | CAPNn | MATn | TOGn | PWMn | ECCFn | 模块功能 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 无操作 |
1 | 0 | 0 | 0 | 0 | 1 | 0 | PWM 输出,无中断 |
1 | 1 | 0 | 0 | 0 | 1 | 1 | PWM 输出,产生上升沿中断 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | PWM 输出,产生下降沿中断 |
1 | 1 | 1 | 0 | 0 | 1 | 1 | PWM 输出,产生边沿中断 |
0 | 1 | 0 | 0 | 0 | 0 | X | 16位上升沿捕获模式 |
0 | 0 | 1 | 0 | 0 | 0 | X | 16位下降沿捕获模式 |
0 | 1 | 1 | 0 | 0 | 0 | X | 16位边沿捕获模式 |
1 | 0 | 0 | 1 | 0 | 0 | X | 16位软件定时器 |
1 | 0 | 0 | 1 | 1 | 0 | X | 16位高速脉冲输出 |
7.2.3 PCA模块 PWM 寄存器 PCA_PWMn
① EBSn_1,EBSn_0:PCA 模块n 工作于 PWM 模式时的位数选择器。
EBSn_1 | EBSn_0 | PWM位数 | 重载值 | 比较值 |
---|---|---|---|---|
0 | 0 | 8 | {EPCnH, CCAPnH[7:0]} | {EPCnL, CCAPnL[7:0]} |
0 | 1 | 7 | {EPCnH, CCAPnH[6:0]} | {EPCnL, CCAPnL[6:0]} |
1 | 0 | 6 | {EPCnH, CCAPnH[5:0]} | {EPCnL, CCAPnL[5:0]} |
1 | 1 | 10 | {EPCnH, XCCAPnH[1:0],CCAPnH[7:0]} | {EPCnL,XCCAPnL[1:0],CCAPnL[7:0]} |
7.2.4 PCA 16位计数器CL,CH
(地址分别为E9H和F9H,复位值均为00H)。它们用于保存PCA的装载值
7.2.5 PCA 捕获/比较值寄存器 CCAPnL,CCAPnH
捕获功能:保存发生捕获时的PCA计数值。
比较功能:将CL,CH的值与保存在 CCAPnL,CCAPnH 中的值进行比较,给出比较结果。
匹配功能:将CL,CH的值与保存在 CCAPnL,CCAPnH 中的值进行比较(是否相等),给出匹配结果。
PWM 模式:调占空比。
7.3 PCA模块的工作模式
7.3.1 捕获模式
工作在该模式时,必须使 CCAPMn 的两位(CAPNn,CAPPn)至少有一位=1 。
对外部输入 CCPn 引脚的跳变进行采样,采样到有效跳变时,将 PCA计数器 CH,CL的值装载到 模块的捕获寄存器(CCAPnH,CCAPnL)中,并申请中断(CCON 中的CCF=1,CCAPMn中的ECCFn=1时),可在中断服务程序中检测是哪个模块产生了中断。注意软件清0.
7.3.2 16位软件定时器模式
通过置位寄存器CCAPMn的ECOMn和MATn位,可使PCA模块用作软件定时器。
PCA定时器的值与模块捕获寄存器的值相比较,当二者相等时,CCON中的CCFn被硬件置位,若ECCFn被置位,将产生中断。
[CH,CL]每隔一定的时间自动加1,时间间隔取决于选择的时钟源。如果每次PCA模块中断后,在中断服务程序中给[CCAPnH,CCAPnL]增加一个相同的数值,那么下一次中断来临的间隔时间T也是相同的,从而实现了定时功能。定时时间的长短,取决于时钟源的选择以及PCA计数器计数值的设置。
7.3.3 高速输出模式
当 CCAPMn 寄存器的 TOGn,MATn 和 ECOMn 位都 =1 时,PCA 工作于高速输出模式。
该模式中,当PCA计数器的计数值与模块捕获寄存器[CCAPnH,CCAPnL]的值相匹配时,PCA模块的输出CCPn将发生翻转。
7.3.4 脉宽调制输出(PWM 模式Pulse Width Modulation)
IAP15W4K58S4单片机的PCA模块可以通过程序设定各自的寄存器PCA_PWMn(n=0,1.下同)中的位EBSn_1及EBSn_0,使其工作于PWM模式。
所有PCA模块都可用作PWM输出,输出频率取决于PCA定时器的时钟源。由于所有模块共用PCA定时器,所以它们的输出频率相同,各个模块的输出占空比是独立变化的。
当某个I/O 口作为PWM使用时,该口的状态如表所示。
EBSn_1 | EBSn_0 | PWM位数 | 重载值 | 比较值 |
---|---|---|---|---|
0 | 0 | 8 | {EPCnH, CCAPnH[7:0]} | {EPCnL, CCAPnL[7:0]} |
0 | 1 | 7 | {EPCnH, CCAPnH[6:0]} | {EPCnL, CCAPnL[6:0]} |
1 | 0 | 6 | {EPCnH, CCAPnH[5:0]} | {EPCnL, CCAPnL[5:0]} |
1 | 1 | 10 | {EPCnH, XCCAPnH[1:0],CCAPnH[7:0]} | {EPCnL,XCCAPnL[1:0],CCAPnL[7:0]} |
当 PCA 模块工作于 8位 PWM 模式时,当{0, CL[7:0]} 的值小于{EPCnL, CCAPnL[7:0]}时,输出为低,
当{0, CL[7:0]} 的值大于等于 {EPCnL, CCAPnL[7:0]} 时,输出为高。当PCA计数器的值溢出时,{EPCnH, CCAPnH[7:0]} 的内容装载到 {EPCnL, CCAPnL[7:0]} 中,可实现无干扰的更新 PWM。
当PWM是8位时:
PWM 频率 = PCA时钟输入源频率 / 256
调频率,可以改 PCA时钟输入源的频率。如选择 T0 溢出 或 ECI 脚的输入作为时钟输入源。
PCA 模块工作于8位 PWM 模式的结构图;
PCA 模块工作于10位 PWM 模式的结构图;
注意:在更新 10 位 PWM 重载值时。必须先写高两位 XCCAPnH[1:0] 再写低8位 CCAPnL[7:0] 。
7.4 PCA 模块的编程要点
一是 正确初始化,二是 中断服务程序的编写。
初始化部分大致:
- 设置PCA模块的工作方式,将控制字写入CMOD、CCON和CCAPMn寄存器。
- 设置捕捉寄存器CCAPnL(低位字节)和CCAPnH(高位字节)初值。
- 根据需要,开放PCA中断,将ECF/ECCF0/ECCF1需要置1的置1,并将EA置1。
- 启动PCA 计数器(CH,CL)计数(使CR=1)。
7.5 PWM 模块
集成了PWM模块(6路增强型PWM波形发生器)。增强型PWM波形发生器还设计了对外部异常事件(包括外部端口P2.4的电平异常、比较器比较结果异常)进行监控的功能,可用于紧急关闭PWM输出。PWM波形发生器还可在15位的PWM计数器归零时触发外部事件(例如ADC转换)
7.5.1 PWM 波形发生器的结构
PWM 波形发生器内部有一个15位的 PWM 计数器供6路 PWM(PWM2~PWM7) 使用。
可以设定每路的初始电平,可以设置 两次翻转时间。每路各自独立。
PWM计数器达到周期设置寄存器[PWMCH,PWMCL] 是,归0,并申请中断。
任意一路 PWM 可实现输出波形占空比和波形频率的实时调整,任意两路都可以配合实现 互补对称输出以及死区控制等特殊应用。
7.5.2 PWM 相关的特殊功能寄存器
(1) PWM相关引脚与功能配置
每路输出端口可由 PWMnCR 中的PWMn_PS 位独立的控制是否切换到第二引脚。
PWM通道 | PWM2 | PWM3 | PWM4 | PWM5 | PWM6 | PWM7 |
---|---|---|---|---|---|---|
PWMn_PS=0 | P3.7 | P2.1 | P2.2 | P2.3 | P1.6 | P1.7 |
PWMn_PS=1 | P2.7 | P4.5 | P4.4 | P4.2 | P0.7 | P0.6 |
注意:所有与PWM相关的端口,在上电后均为高阻输入态,必须在程序中将这些口设置为双向口或强推挽模式才可正常输出波形。
(2)PWM 相关功能寄存器
符号 | 地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 初始值 |
---|---|---|---|---|---|---|---|---|---|---|
P_SW2 | BAH | EAXSFR | DBLPWR | P31PU | P30PU | - | S4_S | S3_S | S2_S | 0000,0000B |
PWMCFG | F1H | - | CBTADC | C7INI | C6INI | C5INI | C4INI | C3INI | C2INI | 0000,0000B |
PWMCR | F5H | ENPWM | ECBI | ENC7O | ENC6O | ENC5O | ENC4O | ENC3O | ENC2O | 0000,0000B |
PWMIF | F6H | - | CBIF | C7IF | C6IF | C5IF | C4IF | C3IF | C2IF | x000,0000B |
PWMFDCR | F7H | - | - | ENFD | FLTFLIO | EFDI | FDCMP | FDIO | FDIF | xx00,0000B |
PWMCH | FFF0H | - | PWMCH[6:0] | x000,0000B | ||||||
PWMCL | FFF1H | PWMCL[7:0] | 0000,0000B | |||||||
PWMCKS | FFF2H | - | - | - | SELT2 | PS[3:0] | xxx0,0000B | |||
PWMnT1H | FFn0H(n=0~5) | - | PWMnT1H[6:0] | x000,0000B | ||||||
PWMnT1L | FFn1H(n=0~5) | PWMnT1L[7:0] | 0000,0000B | |||||||
PWMnT2H | FFn2H(n=0~5) | - | PWMnT2H[6:0] | x000,0000B | ||||||
PWMnT2L | FFn3H(n=0~5) | PWMnT2L[7:0] | 0000,0000B | |||||||
PWMnCR | FFn4H(n=0~5) | - | - | - | - | PWMn_PS | EPWMnI | ECnT2SI | ECnT1SI | xxxx,0000B |
(1)端口配置寄存器 P_SW2
与PWM相关的位是 EAXSFR :扩展 SFR 访问控制使能。
注意:若要访问 PWM 在扩展 RAM 区的特殊功能寄存器,必须先将 EAXSFR 位置1。
(2)PWM 配置寄存器 PWMCFG
① CBTADC:PWM计数器归零时(CBIF=1)时,触发 ADC 转换。
- CBTADC=0:PWM计数器归零时时不触发 ADC 转换。
- CBTADC=1:PWM计数器归零时时自动触发 ADC 转换。(前提是PWM,ADC被使能,即ENPWM=1&&ADCON=1)。
② CnINI:设置PWMn 输出端口的是初始电平。
(3)PWM 控制寄存器 PWMCR
① ENPWM:增强型PWM波形发生器使能控制位。
- ENPWM 一旦=1,内部的PWM 计数器会立即开始计数,并比较翻转。所以,要其他所有PWM设置完成后才能置1。
- NEPWM=0 时,PWM计数器会立即停止并归零。
② ECBI:PWM计数器归零中断使能位。
③ENCnO:PWMn 输出使能位。
- ENCnO=1:PWMn 端口为PWM输出口,受PWM控制。
- ENCnO=0:PWMn 端口作为正常的 GPIO。
(4)PWM 中断标志位寄存器 PWMIF
① CBIF:PWM计数器归零中断标志位。需用软件清0。
② CnIF:第n通道 PWM 中断标志位。可设置在两个翻转点触发,需用软件清0.
(5)PWM 外部异常控制寄存器 PWMFDCR
① ENFD:PWM 外部异常检测功能控制位
- ENFD=1:使能 PWM 的外部异常检测功能。
- ENFD=0:关闭 PWM 的外部异常检测功能。
② FLTFLIO:发生 PWM 外部异常时对 PWM 输出口控制位
- FLTFLIO=0:发生 PWM 外部异常时,PWM 的输出口不做任何改变。
- FLTFLIO=1:发生 PWM 外部异常时,PWM 的输出口立即被设置为高阻输入模式(只有 ENCnO=1 所对应的端口才会被强制悬空;PWM外部异常状态取消时,相应的 PWM 输出口会自动回复以前的IO设置)。
③ EFDI:PWM 异常检测中断使能位。
④ FDCMP:设定 PWM 异常检测源为比较器的输出
- FDCMP=0:比较器与 PWM 无关。
- FDCMP=1:当比较器正极 P5.5/CMP+ 电平 比 比较器负极 P5.4/CMP- 的电平高 或比内部参考电压源1.28V 高 时,触发 PWM 异常。
⑤ FDIO:设定 PWM 异常检测源为端口 P2.4 的状态。
- FDIO=1:当 P2.4 的电平为高时,触发 PWM 异常。
- FDIO=0:P2.4 的状态与 PWM 无关。
⑥ FDIF: PWM 异常检测中断标志位
当比较器正极 P5.5/CMP+ 电平 比 比较器负极 P5.4/CMP- 的电平高 或比内部参考电压源1.28V 高 或 P2.4为高电平 时,硬件自动将此位 置1。并申请中断(EFDI=1时)。该标志位需软件清0。
(6)PWM 计数器 PWMCH(只使用低7位),PWMCL
可设 1~32767 作为PWM 的周期。
(7)PWM 时钟选择寄存器 PWMCKS
① SELT2:PWM 时钟源选择控制位。
- SELT2=0:PWM 时钟源为系统时钟经分频器 PS[3:0] 分频之后的时钟。
PWM 计数器时钟 = 系统时钟/(PS[3:0]+1)
- SELT2=1:PWM时钟位定时器 2 的 溢出脉冲。
② PS[3:0]:系统时钟预分频参数。
(8)PWM 的翻转计数器
PWMnT1H[6:0],PWMnT1L[7:0]
PWMnT2H[6:0],PWMnT2L[7:0]
(9)PWMn 的控制寄存器 PWMnCR
① PWMn_PS :PWMn 输出管脚选择位。见7.5.2 (1)
②EPWMnI:PWMn 中断使能控制位。
③ECnT2SI:PWMn 的 PWMnT2 匹配发生波形翻转时的中断使能控制位。
④ECnT1SI:PWMn 的 PWMnT1 匹配发生波形翻转时的中断使能控制位。
7.5.3 PWM 的中断
入口地址 | 优先级设置 | 中断请求位 | 中断允许位 | 中断标志清除方式 | 说明 |
---|---|---|---|---|---|
CBIF | ENPWM/ECBI/EA | 需软件清除 | PWM计数器归0中断 | ||
00B3H(22) | C2IF | ENPWM / EPWM2I / EC2T2SI || EC2T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | |
C3IF | ENPWM / EPWM3I / EC3T2SI || EC3T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | ||
PPWM | C4IF | ENPWM / EPWM4I / EC4T2SI || EC4T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | |
C5IF | ENPWM / EPWM5I / EC5T2SI || EC5T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | ||
C6IF | ENPWM / EPWM6I / EC6T2SI || EC6T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | ||
C7IF | ENPWM / EPWM7I / EC7T2SI || EC7T1SI / EA | 需软件清除 | PWM 输出口翻转中断 | ||
00BBH(23) | PPWMFD | FDIF | ENPWM / ENFD / EFDI / EA | 需软件清除 | PWM 异常检测中断 |
7.6 PWM 模块 编程要点
- 1、设置PWM输出端口引脚的工作模式;7.5.2.(1),PnM0,PnM1
- 2、设置P_SW2寄存器,以允许访问扩展特殊功能寄存器;7.5.2(2)(1 )P_SW2 中 EAXSFR
- 3、设置PWM输出的初始电平;7.5.2(2)(2)PWMCFG 中 CnINI
- 4、设置PWM的时钟;.5.2(2)(6)PWMCH[6:0],PWMCL[7:0] (7) PWMCKS
- 5、设置PWM的计数初值;5.2(2)(6)PWMCH[6:0],PWMCL[7:0]
- 6、设置PWM两次翻转的计数器初值;7.5.2(2)(8)PWMnT1H[6:0],PWMnT1L[7:0]—PWMnT2H[6:0],PWMnT2L[7:0]
- 7、设置PWM的输出引脚;7.5.2(2)(9)PWMnCR—PWMn_PS
- 8、设置PWM中断相关内容;7.5.2(2)(3)PWMCR—ENPWM
- 9、设置PWMCR寄存器,允许PWM波形输出