本实验利用Plus1 7021平台自带的HDMI显示和定时计数器功能介绍基本编程方法,涉及到中断使用, Plus1 7021系统提供4个通用的16位计数定时器timer0到timer3; 每个计数定时器都支持计数到预设值时产生相应的中断信号。
对应系统分配的中断号如下表所示
...
...
This experiment uses the HDMI display and timer counter function of the Plus1 7021 platform to introduce the basic programming method, which involves interrupt use. The Plus1 7021 system provides four general-purpose 16-bit count timers, timer0 to timer3. When the preset value is reached, the corresponding interrupt signal is generated by each timer。
The interrupt numbers assigned by the corresponding system are shown in the table below
| Interrupt Number |
Timer0 | 151 |
Timer1 | 152 |
Timer2 | 153 |
Timer3 | 154 |
对应的32位寄存器详细介绍,请参考我们提供的在线技术文档资料介绍, 如下:
这里简单介绍相关寄存器的含义,如下表所示The corresponding 32-bit registers are described in detail, please refer to the online technical documentation provided as follows:
Here is a brief introduction to the meaning of related registers, as shown in the following table:
控制寄存器 | Control Register | 计数预值控制器 | 计数时钟预处理控制器 | 计数值控制器Counting controller | Counting clock preprocessing controller | Counting value controller |
Timer0 | timer0_ctrl bit[31:16] :保留Reserved bit[15:14] :计数时钟选择 :Timer clock selection 0: 系统时钟System clock (default) 1: bit13 :操作方式 :Operation method 0:单次操作0:Single operation (default) 1:重复操作1:Repeat the operation bit12 : 保留Reserved bit11 :开关控制 0:关闭计数器 1:启动计数器 :Switch control 0:Turn off the counter 1:Start counter bit[10:0] :保留 :Reserved | timer0_reload bit[31:16] :保留 bit[15:0] : 16位计数预值设置
|
| timer0_cnt bit[31:16] :保留 bit[15:0] : 16位计数值
| ||
timer1 | timer1_ctrl bit[31:16] :保留 bit[15:14] :计数时钟选择 0: 系统时钟(default) 1: STC 90KHZ 时钟 bit13 :操作方式 0:单次操作(default) 1:重复操作 bit12 : 保留 bit11 :开关控制 0:关闭计数器 1:启动计数器 bit[10:0] :保留 | timer1_reload bit[31:16] :保留 bit[15:0] : 16位计数预值设置
|
| timer1_cnt bit[31:16] :保留 bit[15:0] : 16位计数值
| ||
timer2 | timer2_ctrl bit[31:6] :保留 bit[5:2] :计数时钟选择 0: 系统时钟(default) 1: STC 90KHZ 时钟 bit1 :操作方式 0:单次操作(default) 1:重复操作 bit1 : 保留 bit0 :开关控制 0:关闭计数器 1:启动计数器 | timer2_reload bit[31:16] :保留 bit[15:0] : 16位计数预值设置
| timer2_pres_val bit[31:16] :保留 bit[15:0] : 16位计数时钟预值设置
| timer2_cnt bit[31:16] :保留 bit[15:0] : 16位计数值
| ||
timer3 | timer3_ctrl bit[31:6] :保留 bit[5:2] :计数时钟选择 0: 系统时钟(default) 1: STC 90KHZ 时钟 bit1 :操作方式 0:单次操作(default) 1:重复操作 bit1 : 保留 bit0 :开关控制 0:关闭计数器 1:启动计数器 | timer3_reload bit[31:16] :保留 bit[15:0] : 16位计数预值设置
| timer3_pres_val bit[31:16] :保留 bit[15:0] : 16位计数时钟预值设置
| timer3_cnt bit[31:16] :保留 bit[15:0] : 16位计数值
|
...
unsigned int stc_config; // 12.7
unsignedint timer0_ctrl; // 12.8
unsignedint timer0_cnt; // 12.9
unsignedint timer1_ctrl; // 12.10
unsignedint timer1_cnt; // 12.11
unsigned int timerw_ctrl; // 12.12
...
unsigned int stc_63_48; // 12.15
unsignedint timer2_ctl; // 12.16
unsignedint timer2_pres_val;// 12.17
unsignedint timer2_reload; // 12.18
unsignedint timer2_cnt; // 12.19
unsignedint timer3_ctl; // 12.20
unsignedint timer3_pres_val;// 12.21
unsignedint timer3_reload; // 12.22
unsignedint timer3_cnt; // 12.23
unsigned int stcl_0; // 12.24
...
unsigned int atc_2; // 12.29
unsignedint timer0_reload; // 12.30
unsignedint timer1_reload; // 12.31
};
#define STC_REG ((volatile struct stc_regs *)RF_GRP(12, 0))
...