共2条
1/1 1 跳转至页
问
大家好,这是周公的一个例子。LPC2131 easy ARM板子。
我不理解的是:
1); T0PR = 0; /* 时钟不分频*/
这个时钟分频,是说分主频吗? 那最多可以分多少呢? 如果不分频,也就是用当前的系统工作频率 对吗?
2):T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志
我的理解是,定时器的计时,不断的和预定的时间值比较,也就是检查是否匹配,是这样的吗?比如他的注释里说的T0MRO匹配。时间到,此时产生中断!
3):T0MR0 = Fpclk / 2; /* 0.5秒钟定时
预设时间值,如何计算的呢?比如上面说的0.5s如何计算呢?
总之:
我对所谓的“匹配” ,“捕获”不是很明白!希望大家给予我帮助 !多谢了~!
********************************************************************************************************/
#include "config.h"
#define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */
/*
*********************************************************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void __irq IRQ_Timer0 (void)
{
if ((IO0SET & BEEP) == 0)
IO0SET = BEEP; /* 关闭BEEP*/
else
IO0CLR = BEEP;
T0IR = 0x01; /* 清除中断标志
VICVectAddr = 0x00; /* 通知VIC中断处理结束
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。
** 调试说明 :需要将跳线JP11连接BEEP。
*********************************************************************************************************
*/
int main (void)
{
PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */
IO0DIR = BEEP; /* 设置BEEP控制口输出 */
IRQEnable(); /* IRQ中断使能 */
/* 定时器0初始化 */
T0TC = 0; /* 定时器设置为0 */
T0PR = 0; /* 时钟不分频 */
T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */
T0MR0 = Fpclk / 2; /* 0.5秒钟定时 */
T0TCR = 0x01; /* 启动定时器 */
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */
VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级 */
VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */
VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */
while (1);
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
答 1: 自己顶一下!自己顶一下!还是想得到你们的指点!等待~ 答 2: re是对Fpclk分频,要产生0.02秒定时可以让T0PR=0,T0MR0 = Fpclk / 50;即可,明白了吗? 答 3: 谢谢多谢了~!还有朋友继续赐教吗?
我不理解的是:
1); T0PR = 0; /* 时钟不分频*/
这个时钟分频,是说分主频吗? 那最多可以分多少呢? 如果不分频,也就是用当前的系统工作频率 对吗?
2):T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志
我的理解是,定时器的计时,不断的和预定的时间值比较,也就是检查是否匹配,是这样的吗?比如他的注释里说的T0MRO匹配。时间到,此时产生中断!
3):T0MR0 = Fpclk / 2; /* 0.5秒钟定时
预设时间值,如何计算的呢?比如上面说的0.5s如何计算呢?
总之:
我对所谓的“匹配” ,“捕获”不是很明白!希望大家给予我帮助 !多谢了~!
********************************************************************************************************/
#include "config.h"
#define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */
/*
*********************************************************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void __irq IRQ_Timer0 (void)
{
if ((IO0SET & BEEP) == 0)
IO0SET = BEEP; /* 关闭BEEP*/
else
IO0CLR = BEEP;
T0IR = 0x01; /* 清除中断标志
VICVectAddr = 0x00; /* 通知VIC中断处理结束
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。
** 调试说明 :需要将跳线JP11连接BEEP。
*********************************************************************************************************
*/
int main (void)
{
PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */
IO0DIR = BEEP; /* 设置BEEP控制口输出 */
IRQEnable(); /* IRQ中断使能 */
/* 定时器0初始化 */
T0TC = 0; /* 定时器设置为0 */
T0PR = 0; /* 时钟不分频 */
T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */
T0MR0 = Fpclk / 2; /* 0.5秒钟定时 */
T0TCR = 0x01; /* 启动定时器 */
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */
VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级 */
VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */
VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */
while (1);
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
答 1: 自己顶一下!自己顶一下!还是想得到你们的指点!等待~ 答 2: re是对Fpclk分频,要产生0.02秒定时可以让T0PR=0,T0MR0 = Fpclk / 50;即可,明白了吗? 答 3: 谢谢多谢了~!还有朋友继续赐教吗?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |