打印
[新手园地]

傻瓜菜鸟第2帖——TIMER

[复制链接]
4138|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weshiluwei6|  楼主 | 2011-4-14 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
timer, rc, IO, gp, TE
[i=s] 本帖最后由 weshiluwei6 于 2011-4-14 09:57 编辑 [/i]

抽空写了个小程序   本人是大菜鸟 刚接触不久;   小程序实现了:LED1灯 一秒闪烁一次 利用定时器[code]/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#include <stdio.h>
#include "NUC1xx.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvSYS.h"
#include "Driver\DrvTIMER.h"

void Timer0_Callback (void)
{
if(DrvGPIO_GetBit(E_GPA,3))
{
DrvGPIO_ClrBit(E_GPA,3);
}
else
{
DrvGPIO_SetBit(E_GPA,3);
}
}

void Init_Timer0( void )
{
DrvTIMER_Init(); //初始化定时器
/*User must call this before any timer operation after system boots up*/

DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC,0); //设定IP 时钟源
/* Set TIMER0 clock source are from 12MHz */
/* Parameters: */
/* eIpClkSrc-[in] E_SYS_WDT_CLKSRC / E_SYS_ADC_CLKSRC / E_SYS_TMR0_CLKSRC */
/* E_SYS_TMR1_CLKSRC / E_SYS_TMR2_CLKSRC / E_SYS_TMR3_CLKSRC */
/* E_SYS_UART_CLKSRC / E_SYS_CAN_CLKSRC / E_SYS_PWM01_CLKSRC*/
/* E_SYS_PWM23_CLKSRC / E_SYS_PWM45_CLKSRC/ E_SYS_PWM67_CLKSRC*/
/* E_SYS_FRQDIV_CLKSRC/ E_SYS_I2S_CLKSRC */

DrvTIMER_Open(E_TMR0,1,E_PERIODIC_MODE);
/* 用来设定定时器tick周期并且启动定时器 */

DrvTIMER_SetTimerEvent(E_TMR0,1,(TIMER_CALLBACK) Timer0_Callback,0);
/* 隔1个tick执行事件,parameter3-事件处理函数指针,4-传递参数*/

DrvTIMER_EnableInt(E_TMR0); //enable the specified timer interrupt

DrvTIMER_Start(E_TMR0); //Start to count the specified timer channel

}


/*************************************************************************************
** Function name: delay_loop
** Descriptions: 延时子程序
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
void delay_loop(void)
{
uint32_t i,j;
for(i=800;i>0;i--)
for(j=500;j>0;j--);

}

/*************************************************************************************
** Function name: main
** Descriptions: LED2跟随LED1的亮灭而灭亮测试程序
** 现 象:下载代码,运行程序,则LED1亮LED2灭 LED1灭LED2亮循环反复
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
int main (void)
{
/* SYSCLK =>12Mhz*/
UNLOCKREG();
SYSCLK->PWRCON.XTL12M_EN = 1;
LOCKREG();
Init_Timer0();

DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT );
DrvGPIO_ClrBit( E_GPA, 2 );
DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT );
while(1);
}
[/code]

timer.rar

601.01 KB

相关帖子

沙发
Swallow_0322| | 2011-4-14 14:37 | 只看该作者
本帖最后由 Swallow_0322 于 2011-4-14 14:39 编辑

顶! O(∩_∩)O~ 你的代码格式?
本帖最后由 weshiluwei6 于 2011-4-14 09:57 编辑

抽空写了个小程序   本人是大菜鸟 刚接触不久;   小程序实现了:LED1灯 一秒闪烁一次 利用定时器
/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#include <stdio.h>
#include "NUC1xx.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvSYS.h"
#include "Driver\DrvTIMER.h"

void Timer0_Callback (void)
{
if(DrvGPIO_GetBit(E_GPA,3))
{
DrvGPIO_ClrBit(E_GPA,3);
}
else
{
DrvGPIO_SetBit(E_GPA,3);
}
}

void Init_Timer0( void )
{
DrvTIMER_Init(); //初始化定时器
/*User must call this before any timer operation after system boots up*/

DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC,0); //设定IP 时钟源
/* Set TIMER0 clock source are from 12MHz */
/* Parameters: */
/* eIpClkSrc-[in] E_SYS_WDT_CLKSRC / E_SYS_ADC_CLKSRC / E_SYS_TMR0_CLKSRC */
/* E_SYS_TMR1_CLKSRC / E_SYS_TMR2_CLKSRC / E_SYS_TMR3_CLKSRC */
/* E_SYS_UART_CLKSRC / E_SYS_CAN_CLKSRC / E_SYS_PWM01_CLKSRC*/
/* E_SYS_PWM23_CLKSRC / E_SYS_PWM45_CLKSRC/ E_SYS_PWM67_CLKSRC*/
/* E_SYS_FRQDIV_CLKSRC/ E_SYS_I2S_CLKSRC */

DrvTIMER_Open(E_TMR0,1,E_PERIODIC_MODE);
/* 用来设定定时器tick周期并且启动定时器 */

DrvTIMER_SetTimerEvent(E_TMR0,1,(TIMER_CALLBACK) Timer0_Callback,0);
/* 隔1个tick执行事件,parameter3-事件处理函数指针,4-传递参数*/

DrvTIMER_EnableInt(E_TMR0); //enable the specified timer interrupt

DrvTIMER_Start(E_TMR0); //Start to count the specified timer channel

}


/*************************************************************************************
** Function name: delay_loop
** Descriptions: 延时子程序
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
void delay_loop(void)
{
uint32_t i,j;
for(i=800;i>0;i--)
for(j=500;j>0;j--);

}

/*************************************************************************************
** Function name: main
** Descriptions: LED2跟随LED1的亮灭而灭亮测试程序
** 现 象:下载代码,运行程序,则LED1亮LED2灭 LED1灭LED2亮循环反复
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
int main (void)
{
/* SYSCLK =>12Mhz*/
UNLOCKREG();
SYSCLK->PWRCON.XTL12M_EN = 1;
LOCKREG();
Init_Timer0();

DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT );
DrvGPIO_ClrBit( E_GPA, 2 );
DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT );
while(1);
}

使用特权

评论回复
板凳
Swallow_0322| | 2011-4-14 14:41 | 只看该作者
咦!我就是完全复制你的内容啊?不知道咋搞的!

使用特权

评论回复
地板
hotpower| | 2011-4-14 16:45 | 只看该作者
不错,灯能闪烁了就是一大进步

使用特权

评论回复
5
weshiluwei6|  楼主 | 2011-4-14 18:09 | 只看该作者
3# Swallow_0322

为什么我们显示的不一样 SW哥 你怎么弄的呢

使用特权

评论回复
6
weshiluwei6|  楼主 | 2011-4-14 18:09 | 只看该作者
4# hotpower

恩恩 谢谢大叔 我要搞串口哈 ;P

使用特权

评论回复
7
Swallow_0322| | 2011-4-15 07:47 | 只看该作者
5# weshiluwei6

我就是完全复制你的内容!难道这就是传说中的RP问题,O(∩_∩)O哈哈~

你再试试,应该可以的!这比调试程序简单多了,实践一下就OK!

使用特权

评论回复
8
weshiluwei6|  楼主 | 2011-4-15 19:35 | 只看该作者
[code]
[/code]

使用特权

评论回复
9
lixupengarm| | 2011-5-23 17:52 | 只看该作者
:victory:mark!!

使用特权

评论回复
10
lwslws201| | 2011-8-11 01:18 | 只看该作者
学习了。

使用特权

评论回复
11
strang| | 2011-8-11 11:01 | 只看该作者
Studing !
good good study
day day up

使用特权

评论回复
12
fskjhm| | 2011-8-13 07:38 | 只看该作者
练习代码:)
int main (void)

{

/* SYSCLK =>12Mhz*/

UNLOCKREG();

SYSCLK->WRCON.XTL12M_EN = 1;

LOCKREG();

Init_Timer0();



DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT );

DrvGPIO_ClrBit( E_GPA, 2 );

DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT );

while(1);

}

使用特权

评论回复
13
tao560532| | 2011-8-13 08:44 | 只看该作者
犀利

使用特权

评论回复
14
Mr_lizhiyong| | 2013-7-14 20:13 | 只看该作者
不错,不错!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

1124

帖子

1

粉丝