单片机交流
直播中

张娟

7年用户 2059经验值
私信 关注
[问答]

如何去学习IAP 15W4K58S4单片机?

如何去学习IAP 15W4K58S4单片机

回帖(1)

何柳青

2021-11-9 10:32:52
  一,微型计算机的结构

微型计算机的模型:





1. 中央处理器(CPU)的组成

运算器 + 控制器
1.1 运算器




  • 算术逻辑单元(ALU)
  • 累加寄存器(A)
  • 寄存器组
  • 标志寄存器(F)

1.2 控制器




  • 程序控制器(PC)
  • 指令寄存器(IR)
  • 指令译码器(ID)
  • 微操作信号发生器(MOSG)
  • 地址寄存器(AR)
  • 数据寄存器(DR)

2. 存储器

3.工作过程

二,单片机的基本结构

2.1 IAP15W4K58S4 的基本组成:






2.2 IAP15W4K58S4 的主要性能:




  • 增强型 8051 内核
  • 58KB Flash 程序存储器
  • 4096B 的 SRAM,相当于计算机的内存,可用于保存程序中所用的变量
  • 5 个 16位 可自动重装载的定时/计数器(T0,T1,T2,T3,T4)
  • 62 根 I/O 口线
  • 4 个 全双工异步串行口(UART)
  • 1 个 高速同步通信端口(SPI)
  • 中断控制系统。5路外部中断,掉电模式可由外部中断低电平触发中断方式
  • 8 通道10位高速 ADC
  • 6 通道 PWM 和 2通道可编程计数器阵列 (CCP)
  • 内部可靠上电复位和硬件看门狗
  • 内部集成高精度R/C时钟,常温下可省去外部晶振威廉希尔官方网站
  • 具有在 系统可编程/在应用可编程功能(ISP/IAP),无需专用编程器
  • 多种封装行形式

2.3 IAP15W4K58S4 的引脚:

DIP40 封装形式





(1)电源和复位引脚




  • VCC:接电源 +5V ,IAP15W4K58S4 的工作电压2.5V~5V
  • GND:接地
  • RST:复位

(2)外接晶体引脚






晶体振荡器M的频率可在 4~48 MHZ 之间选择,典型值 11.0592 MHZ(设计单片机通信系统时,使用这个频率的晶振可以准确的得到9600bit/s,和 1920 bit/s),电容C1,C2 对时钟频率有微调作用,可在5~100PF 之间选择,典型值47pF。





(3)控制和复位引脚




  • ALE (与P4.5复用)
    当访问外部存储器或者外部扩展的并行I/O口时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
  • RST(与P5.4复用)
    当振荡器运行时,在此引脚上出现两个 机器周期的高电平将使单片机复位(单片机内部集成复位威廉希尔官方网站 ),该端口默认设为I/O口。
    如果需要单片机接上电源就可以复位,则需要使用上电复位威廉希尔官方网站 :





(4)输入/输出(I/O)引脚

IAP15W4K58S4单片机最多有62 根 I/O 口线
P0口(8根):P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7
P1口(8根):P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7
P2口(8根):P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7
P3口(8根):P3.0,P3.1,P3.2,P3.3,P3.4,P3.5,P3.6,P3.7
P4口(8根):P4.0,P4.1,P4.2,P4.3,P4.4,P4.5,P4.6,P4.7
P5口(6根):P5.0,P5.1,P5.2,P5.3,P5.4,P5.5
P6口(8根):P6.0,P6.1,P6.2,P6.3,P6.4,P6.5,P6.6,P6.7
P7口(8根):P7.0,P7.1,P7.2,P7.3,P7.4,P7.5,P7.6,P7.7
(黄色部分只有 LQFP64 封装的IAP15W4K58S4单片机有)



  • 这些I/O 口线可设置成 四种模式:


    • 准双向口/弱上拉
    • 推挽/强上拉
    • 输入/高阻
    • 开漏模式


  • 复位后:准双向口/弱上拉模式
  • 每根I/O口线驱动能力均可达到 20mA,但整个芯片最大不得超过 100mA。
  • 许多 I/O 口线复用


2.4 存储空间

IAP15W4K58S4 存储空间主要特点:程序存储器和数据存储器的寻址空间是分开的。
片内集成3个物理上相互独立的存储器空间:



  • 程序 Flash 存储器(没用作程序存储器的 Flash 存储器可以用做 EEPROM 使用)
  • 内部数据存储器
  • 拓展数据存储器





2.4.1 程序Flash存储器




  • 用于存放 用户程序,数据和表格等信息。
  • 58KB —— 0000H~E7FFH
  • 复位后,PC 内容为 0000H
  • 在程序Flash存储器中有中断地址区,这些特殊的内存单元是中断服务程序的入口地址(中断向量)。

2.4.2 内部数据存储器

即 内部RAM ,共256个单元,通常分为两部分:低128单元(00H~7FH),高128单元(80H~FFH)
(1)内部数据存储器低128单元

[tr]地址范围说明[/tr]
30H~7FH数据缓冲区(供用户使用的一般RAM区)
20H~2FH位寻址区(00H~7FH)(也可字节寻址)
18H~1FH工作寄存器3区(R7~R0)
10H~17H工作寄存器2区(R7~R0)
08H~0FH工作寄存器1区(R7~R0)
00H~07H工作寄存器0区(R7~R0)



  • 工作寄存器,也叫通用寄存器。
    任意时刻,CPU只能使用其中一组寄存器,正在使用的寄存器组称为“当前寄存器组”,由程序状态字寄存器PSW中的RS1,RS0位的状态组合决定。
  • 位寻址区,可位寻址?…
  • 用户RAM区,可自由使用

(1)内部数据存储器高128单元和特殊功能寄存器(专用寄存器)

对IAP15W4K58S4来说,80H~FFH既是高128单元,又是特殊功能寄存器的地址,地址空间重叠,但物理上是独立的,用不同的寻址方式加以区分:



  • 高128字节的RAM区使用间接寻址访问(一般用于开辟堆栈)
  • 特殊功能寄存器使用直接寻址访问

特殊功能寄存器(专用寄存器SFR)



  • ① 程序计数器(PC),没有地址,一般不计作专用寄存器
  • ② 累加器(ACC)
  • ③ B寄存器
  • ④ 程序状态字(PSW)   [tr]SW位地址D7HD6HD5HD4HD3HD2HD1HD0H[/tr]
    节地址 D0HCYACF0RS1RS0OVF1P



    • CY(PSW.7)——进位标志位
    • AC(PSW.6)——辅助进位标志位
    • F0(PSW.5)——用户标志位
    • RS1和RS0(PSW.3,PSW.4)——当前寄存器组选择位
    • OV(PSW.2)——溢出标志位
    • F1(PSW.1)——用户标志位
    • P(PSW.0)——奇偶标志位


  • ⑤ 数据指针(DPTR)
  • ⑥ 堆栈指针(SP)
    专用寄存器的字节地址和位地址
    特殊功能寄存器中,直接地址可被8整除的寄存器也可以进行位寻址(也可字节寻址)

2.5 并行输入/输出口

2.5.1 IAP15W4K58S4单片机的I/O口


2.5.2 IAP15W4K58S4单片机的I/O口的工作模式

每个口的工作模式由 PnM0 和 PnM1 (n=1,2,3,4,5)的相应位控制
[tr]PnM1[7:0]PnM0[7:0]I/O口模式[/tr]
00准双向口(传统8051单片机I/O口模式),灌电流可达20mA,拉电流为270μA,由于制造误差,实际为270uA~150uA
01推挽输入输出(强上拉输出,可达20mA,要加限流电阻,尽量少用)
10仅为输入(高阻)
11开漏(Open Drain),内部上拉电阻断开,要外加上拉电阻
例:P1.7为开漏模式,P1.6为强推挽输入输出模式,P1.4,P1.3,P1.2,P1.1和P1.0为弱上拉模式:
P1M1 = 0xa0; //0xa0=10100000BP1M0 = 0xc0; //0xc0=11000000B IAP15W4K58S4单片机的每个I/O口:



  • 在弱上拉时都能承受20mA的灌电流(最好还是使用限流电阻,如1KΩ)
  • 在强推挽输出时都能输出20mA的拉电流(也要加限流电阻)。
  • 整个芯片的工作电流推荐不要超过90mA。即从MCU-Vcc流入的电流不超过90mA,从MCU-GND流出的电流不超过90mA,整体流入/流出电流都不能超过90mA。

2.5.2 IAP15W4K58S4单片机的I/O口的结构:

(1)准双向口工作模式的结构






(2)推挽输出工作模式的结构






(3)仅为输入(高阻)工作模式的结构






(4)开漏输出工作模式的结构






2.6 时钟威廉希尔官方网站 与复位威廉希尔官方网站

2.6.1 时钟威廉希尔官方网站 与时序…


2.6.2 单片机的复位…


2.7 IAP15W4K58S4 的时钟(系统时钟)

主时钟可以是内部 R/C 时钟,也可以是外部输入的时钟或外部晶振振荡产生的时钟。
系统时钟是指对主时钟进行分频后CPU,串口,SPI,定时器,CCP/PWM/PCA,ADC的实际工作时钟,用 SYSCLK 表示。
分频相关寄存器:
[tr]寄存器地址D7D6D5D4D3D2D1D0[/tr]
CLK_DIV97HSYSCKO_S1SYSCKO_S0ADRJTX_RXSYSCLKO_2CLKS2CLKS1CLKS0
INT_CLKO8FH-EX4EX3EX2SYSCKO_S2T2CLKOT1CLKOT0CLKO
分频关系:
[tr]CLKS2CLKS1CLKS0系统时钟和主时钟的分频关系[/tr]
000系统时钟频率 = 主时钟频率,不分频
001系统时钟频率 = 主时钟频率/2
010系统时钟频率 = 主时钟频率/4
011系统时钟频率 = 主时钟频率/8
100系统时钟频率 = 主时钟频率/16
101系统时钟频率 = 主时钟频率/32
110系统时钟频率 = 主时钟频率/64
111系统时钟频率 = 主时钟频率/128
系统时钟对外输出:
[tr]SYSCKO_S2SYSCKO_S1SYSCKO_S0主时钟的输出频率[/tr]
000系统时钟不对外输出
001输出时钟频率=系统时钟频率
010输出时钟频率=系统时钟频率/2
011输出时钟频率=系统时钟频率/4
100输出时钟频率=系统时钟频率/16
注意:??? 串口部分 CLK_DIV 和 定时器章节的 主时钟输出 CLK_DIV, INT_CLKO不一致。
三,Keil C51

1. Keil C51 拓展关键字

bit:位变量声明,声明一个位变量或位类型的函数
所有bit类型的变量都被定位在8050片内RAM 的可位寻址区(20H~2FH),共128位。
所以,某范围内最多声明128个 bit 变量
***it:位变量声明,声明一个可位寻址变量
RAM 中的可位寻址位,或,特殊寄存器中的可寻址位
***it flag0=flag^0;//flag的第0位 sfr:特殊功能寄存器声明,声明一个特殊功能寄存器(8位)
sfr16:特殊功能寄存器声明,声明一个16位的特殊功能寄存器
包含标准8051单片机所有特殊功能寄存器和他们位定义的头文件 reg51.h 。
stc15.h 包含了标准8051单片机寄存器的定义,编程时只需包含这个。
data:存储器类型说明,直接寻址的8051内部数据存储器
bdata:存储器类型说明,可位寻址的8051内部数据存储器
idata:存储器类型说明,间接寻址的8051内部数据存储器
pdata:存储器类型说明,“分页”寻址的8051外部数据存储器
xdata:存储器类型说明,8051外部数据存储器
code:存储器类型说明,8051程序存储器
interrupt:中断函数声明,定义一个中断函数
reentrant:可重入函数声明,定义一个可重入函数
using:寄存器组定义,指定使用8050的工作寄存器的某一组
2.函数

2.1 中断函数

void 函数名(void) interrupt 中断号 [using n]//n为工作寄存器组(共4个),[]表示可省略{                } //---------各个子函数的声明-----------void delay(long delaytime){                while(delaytime>0) delaytime--;  //子函数的实现代码}//---------各个中断函数的实现----------void INT0_ISR(void) interrupt 0    //外部中断0服务子函数{              //根据需要填入程序代码}void INT1_ISR(void) interrupt 2         //外部中断1服务子函数{            //根据需要填入程序代码}void INT2_ISR(void) interrupt 10                 //外部中断2服务子函数{        //根据需要填入程序代码}void INT3_ISR(void) interrupt 11                 //外部中断3服务子函数{        //根据需要填入程序代码}void INT4_ISR(void) interrupt 16                 //外部中断4服务子函数{        //根据需要填入程序代码}void T0_ISR(void) interrupt 1            //定时器0中断服务子函数{              //根据需要填入程序代码}void T1_ISR(void) interrupt 3           //定时器1中断服务子函数{           //根据需要填入程序代码}void T2_ISR(void) interrupt 12                    //定时器2中断服务子函数{        //根据需要填入程序代码}void T3_ISR(void) interrupt 19            //定时器3中断服务子函数{    //根据需要填入程序代码}void T4_ISR(void) interrupt 20            //定时器4中断服务子函数{    //根据需要填入程序代码}void UART1_ISR(void) interrupt 4   //串口1中断服务子函数{            //根据需要填入程序代码,注意中断请求标志的清零}void UART2_ISR (void) interrupt 8           //串口2中断子函数{        //根据需要填入程序代码,注意中断请求标志的清0}void UART3_ISR (void) interrupt 17    //串口3中断子函数{    //根据需要填入程序代码,注意中断请求标志的清0}void UART4_ISR (void) interrupt 18    //串口4中断子函数{    //根据需要填入程序代码,注意中断请求标志的清0}void SPI_ISR (void) interrupt 9      //SPI中断子函数{             //根据需要填入程序代码,注意中断请求标志的清零}void ADC_ISR (void) interrupt 5      //ADC中断服务子函数{            //根据需要填入程序代码,注意中断请求标志的清零}void LVD_ISR (void) interrupt 6      //低电压检测中断子函数{            //根据需要填入程序代码,注意中断请求标志的清零}void COMP_ISR (void) interrupt 21    //比较器模块中断服务子函数{    //根据需要填入程序代码,注意中断请求标志的清0}void PCA_ISR (void) interrupt 7      //PCA中断子函数{            //根据需要填入程序代码,注意中断请求标志的清零}void PWM_ISR (void) interrupt 22    //PWM模块中断服务子函数{    //根据需要填入程序代码,注意中断请求标志的清0}void PWMFLT_ISR (void) interrupt 23    //PWM异常检测模块中断服务子函数{    //根据需要填入程序代码,注意中断请求标志的清0} 2.2 指定存储模式

small ,compact,large
void fun1(void) small{} 2.3 函数的重入

不可重入的函数,在运行过程中不可被中断
解决函数重入问题:
① 只允许主程序或中断之一调用该函数
#pragma disable ② 说明该函数可重入
(模拟堆栈)
void func (...) reentrant; 注意:



  • 通常中断程序使用与主程序不同的工作寄存器组。
  • 对可重入函数,在其前面加上开关:#pragma noaregs,以禁止编译器使用绝对寄存器寻址,可生成不依赖于寄存器组的代码。

2.4 库函数

三,中断

3.1 中断源

中断源是指能发出中断请求,引起中断的装置或事件。
IAP15W4K58S4单片机提供21个中断请求源:



  • 5个外部中断请求(INT0,INT1…)
  • 5个片内定时/计数器溢出中断请求
  • 4个片内异步串行口(UART)中断请求
  • 1个ADC中断
  • 1个低电压检测中断
  • 1个PCA中断
  • 1个SPI中断
  • 1个比较器中断
  • 1个PWM中断以及1个PWM异常检测中断。

复位后禁止一切中断。禁止由两级控制组成
3.2 中断结构:






中断总控制

复位后禁止一切中断。禁止由两级控制组成。总控制由IE寄存器最高位EA控制
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
EA = 1 则总中断允许,还需要看个别中断源的分控制。
3.3 外部中断和定时器中断

3.3.1 中断请求标志

外部中断和定时器中断的请求标志在 定时/计数器 T0,T1 的控制寄存器 TCON 中:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
TCON88HTF1TR1TF0TR0IE1IT1IE0IT000000000B
------外部中断0/1-------
① IT0/1:外部中断 INT0/1 触发方式控制位,可由软件置0/1。



  • 0:上升沿和下降沿均可触发外部中断,触发时置位 IE0/1。
  • 1:下降沿触发方式,触发时置位 IE0/1。

② IE0/1:外部中断 INT0/1 请求标志。触发外部中断0后使该位位1,以此向 CPU 请求中断。进入中断后硬件自动置0。
------定时/计数器0/1-------
① TR0/1:定时/计数器 T0/1 启动/停止 控制位。
② TF0/1:定时/计数器 T0/1 的溢出中断标志。进入中断后硬件自动置0,也可软件清0。
注意:



  • 外部中断0和外部中断1还可以用于将单片机从掉电模式唤醒。
  • 外部中断2/3/4 只能下降沿触发,其中断请求标志位对用户不可见。当相应的中断服务程序执行后或EXn=0(n=2,3,4),这些中断请求标志位会自动地被清0。外部中断2/3/4也可以用于将单片机从掉电模式唤醒。
  • 定时器2/3/4 的中断请求标志位对用户不可见。当相应的中断服务程序执行后或ET2=0/ET3=0/ET4=0,中断请求标志位会自动地被清0。

3.3.2 中断允许位

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B
INT_CLKO8FH-EX4EX3EX2-T2CLKOT1CLKOT0CLKOX000X000B
ET1:定时器1中断允许控制位
EX1:外部中断 INT1中断允许控制位
ET0:定时器0中断允许控制位
EX0:外部中断 INT0中断允许控制位
ET4:定时器4中断允许控制位
ET3:定时器3中断允许控制位
ET2:定时器2中断允许控制位
EX4:外部中断 INT4中断允许控制位
EX3:外部中断 INT3中断允许控制位
  3.4 串口的中断

3.4.1 中断请求标志

[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
SCON98HSM0/FESM1SM2RENTB8RB8TIRI00000000B
S2CON9AHS2SM0-S2SM2S2RENS2TB8S2RB8S2TIS2RI0X000000B
S3CONACHS3SM0S3ST3S3SM2S3RENS3TB8S3RB8S3TIS3RI0X000000B
S4CON84HS4SM0S4ST4S4SM2S4RENS4TB8S4RB8S4TIS4RI0X000000B
------串口1/2/3/4控制寄存器 (S2/3/4)SCON 中的标志位-------
① (S2/3/4)RI:串口1/2/3/4接收中断标志。(接收完毕后置1申请中断),也可用于查询。
② (S2/3/4)TI:串口1/2/3/4发送中断标志。(发送完毕后置1申请中断),也可用于查询。
注意:



  • 这些中断请求标志都不能自动清0,需中断程序中软件清0。
  • 接收和发送中断共用一个中断入口地址,故需软件查询是哪种中断。
  • 其余控制位详见 “串口通信”。

3.4.2 中断允许位

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B
ES:串口1中断允许控制位
ES4:串口4中断允许控制位
ES3:串口3中断允许控制位
ES2:串口2中断允许控制位
  3.5 低电压检测中断

3.5.1 中断请求标志

电源控制寄存器 PCON:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
PCON87HSMODSMOD0LVDFPOFGF1GF0FDIDL00110000B
LVDF:是低电压检测标志位,同事也是低电压检测中断请求标志位。
在正常工作和空闲工作状态时,内部工作电压 Vcc 低于低电压检测门槛电压时 LVDF 自动置1,不管低电压检测中断是否被允许。该位只能软件清0,若清0后还是低于门槛电压,该位又被置1。
3.5.2 中断允许位

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
ELVD:低电压检测允许位。
进入掉电工作状态前,若该位=0,则低电压检测威廉希尔官方网站 不工作。若该位=1,则低于门槛电压后产生低电压检测中断并将MCU 从掉电状态唤醒。
3.6 PCA 的中断

3.6.1 中断请求标志

PCA控制寄存器 CCON :
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
CCOND8HCFCR----CCF1CCF000XXXX00B
① CF:PCA 计数器溢出标志位。



  • 当 ECF 置1时,CF标志可用来产生中断。
  • 可通过软件/硬件置1,但只能软件清0。

② CCF1/CCF0:PCA 个个模块的中断标志。



  • 硬件置1,只能软件清0。
  • 中断服务程序中,判断哪个模块产生中断。

3.6.2 中断允许

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
CCAPM0DAH-ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0X0000000B
CCAPM1DBH-ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1X0000000B
CMODD9HCIDL---CPS2CPS1CPS0ECF0XXX0000B
ECCFn(n=0,1):使能 CCFn 中断。
ECF:PCA 计数器溢出中断允许控制位。
3.7 SPI 的中断

3.7.1 中断请求标志

SPI 状态寄存器SPSTAT:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
SPSTATCDHSPIFWCOL------00XXXXXXB
SPIF:SPI 传输完成标志。



  • 一次传输完成时,SPIF 被置位。
  • ESPI=1,EA=1 时,SPIF 置位将产生中断。
  • SPI 处于主模式且 SSIG=0 时,若SS 为输入并被驱动为低电平,SPIF 也将置位,表示“模式改变”。
  • 需要软件清 0 。

其余位详见“数据通信”。
3.7.2 中断允许

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B
ESPI:SPI 中断允许控制位
3.8 ADC 的中断

3.8.1 中断请求标志

[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
ADC_CONTRBCHADC_POWERSPEED1SPEED0ASC_FLAGADC_STARTCHS2CHS1CHS000000000B
ADC_FLAG:A/D 转换结束标志位。



  • A/D 转换完成后,ADC_FLAG=1.
  • 若允许A/D 转换中断(EADC=1,EA=1),将产生中断。
  • 也可软件查询是否转换完成。
  • 无论是否中断一定要记得 软件清 0。

3.8.2 中断允许

EA = 1 且:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
EADC:ADC中断允许控制位。
3.9 PWM 的中断

3.9.1 中断请求标志

PWM 中断标志寄存器 PWMIF 和 PWM 外部异常控制寄存器 PWMFDCR:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
PWMIFF6H-CBIFC7IFC6IFC5IFC4IFC3IFC2IFX0000000B
PWMFDCRF7H--ENFDFLTFLIOEFDIFDCMPFDIOFDIFXX000000B
① CBIF:PWM 计数器回0 中断标志位。PWM 计数器回0时硬件置1,申请中断。
② CnIF(n=2~7):第 n 通道的PWM 中断标志位。PWM 发生翻转时硬件置1,申请中断。
③ FDIF:PWM异常检测中断标志。
注意:



  • 这些中断标志要由 软件清 0 。

3.9.2 中断允许

[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
PWMCRF5HENPWMECBIENC7OENC6OENC6OENC6OENC6OENC6O00000000B
PWMFDCRF7H--ENFDFLTFLIOEFDIFDCMPFDIOFDIFXX000000B
ECBI:PWM 计数器回 0 中断允许控制位。
EFDI:PWM 异常检测中断允许控制位。
3.10 比较器的中断

3.10.1 中断请求标志

比较控制寄存器 CMPCR1:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
CMPCR1E6HCMPENCMPIFPIENIEPISNISCMPOECMPRES00000000B
CMPIF:比较器中断标志。



  • CMPIF=(CMPIF_p||CMPIF_n)
  • CMPIF_p:比较器上升沿中断标志,若允许上升沿中断允许位 PIE=1,则申请中断。
  • CMPIF_n:比较器下降沿中断标志,若允许下降沿中断允许位 NIE=1,则申请中断。
  • 对 CMPIF 写0 后,CMPIF_p 和 CMPIF_n 自动置0
  • 需软件清 0。

3.10.2 中断允许

PIE:比较器上升沿中断允许位。
NIE:比较器下降沿中断允许位。
3.11 优先级

中断优先级寄存器:
[tr]寄存器地址D7D6D5D4D3D2D1D0复位值[/tr]
IPB8HPPCAPLVDPADCPSPT1PX1PT0PX000000000B
IP2B5HHH----PPWMFDPPWMPSPIPS2XXXX0000B
置1 为高优先级,0为低。
PPCA:PCA
PPLVD:低电压检测
PADC:ADC
PS:串口1
PT1/0:定时器1/0
PX1/0:外部中断 INT1/0
PPWMFD:PWM 异常检测
PPWM:PWM
PSPI:SPI
PS2:串口2
还存在着默认优先级(辅助优先级),即,同时申请中断时,中断号小的优先:
中断号查询



举报

更多回帖

发帖
×
20
完善资料,
赚取积分