新唐的定时器一般有很多功能:普通的定时功能,事件计数功能,捕获功能,超时触发ADC等等。大家如果感兴趣可以读一下《NANOB Timer功能介绍以及在弱灌注中的应用.pdf》,虽然各个系列Timer功能有差异,但是使用方法上基本一致,只是细节上有些差异。用到的时钟记得在Sys_Init中使能并等待时钟稳定。

这里只介绍简单的定时功能。

/*Timer0中断处理函数,Timer0发生超时,捕获等都会发生该中断。但是因为下面的代码只使能了超时中断,所以该代码只demo超时的处理*/
void TMR0_IRQHandler(void) {
static uint32_t sec = ;
printf("%d sec\n", sec++);
/*打印时间*/
// 清除中断标志
TIMER_ClearIntFlag(TIMER0);
}
int Timer_Init(void) {
/* Timer0选择HXT做时钟源,并且不除频 */ CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0_S_HXT, CLK_TMR0_CLK_DIVIDER());
/* 使能Timer0的时钟 */
CLK_EnableModuleClock(TMR0_MODULE);
/* 初始化Timer0,周期模式,每秒发生一次中断*/
TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, );
/*如果要修改预分频和比较寄存器的值可以用下面两个宏*/ //TIMER_SET_CMP_VALUE(TIMER0, 0xFFFFFF);
//修改比较寄存器的值
//TIMER_SET_PRESCALE_VALUE(TIMER0, 0x0);
//修改预分频的值 /* 使能Timer0中断 */
TIMER_EnableInt(TIMER0);
NVIC_EnableIRQ(TMR0_IRQn);
// 启动 Timer 0
TIMER_Start(TIMER0); }

这个Timer_Init函数里面使能时钟和IP选择时钟源的函数和前文系统初始化中的不太一样,该节中IP选择时钟源和使能时钟调用的是函数,而系统初始化中是直接访问寄存器的方式。这两种方式都可以。直接访问寄存器的方式比较节省ROM,本节的方式容易修改。

M0 M4之Timer初始化的更多相关文章

  1. M0 M4之GPIO初始化

    新唐所有的M0/M4芯片基本上所有的IO都可以发生中断,为了符合大家的习惯还是有所谓的外部中断EINT0和EINT1.有2跟GPIO脚可以配置为EINT0功能和EINT1功能,分别将发生EINT0中断 ...

  2. M0 M4之UART初始化

    新唐的M0/M4 UART都有16级或者64级FIFO,用来缓存UART数据的收/发.例如:如果RX FIFO中断触发级别设为14,UART接收14个字节才会发生RDA(接收数据可得)中断.这样可以降 ...

  3. 新唐M0 M4系统初始化

    系统初始化包含了时钟(clock)初始化和多功能引脚(Multi Function Pin 简称MFP寄存器)配置.void SYS_Init(void) { /* 解锁保护寄存器 */ SYS_Un ...

  4. M0 M4时钟控制(一)

    时钟控制器为整个芯片提供时钟源,包括系统时钟和所有外围设备时钟.该控制器还通过单独时钟的开或关,时钟源选择和分频器来进行功耗控制.在CPU使能低功耗PDEN(CLK_PWRCTL[7]) 位和Cort ...

  5. M0 M4关于库函数的讲解(以时钟为例)

    #define CLK_PWRCON_PD_WAIT_CPU_Pos 8 #define CLK_PWRCON_PD_WAIT_CPU_Msk (1ul << CLK_PWRCON_PD_ ...

  6. 关于新塘 M0 M4添加库文件的说明

  7. 订餐系统之定时器Timer不定时

    经过几天漫长的问题分析.处理.测试.验证,定时器Timer终于定时了,于是开始了这篇文章,希望对还在纠结于“定时器Timer不定时”的同学有所帮助,现在的方案,在系统日志中会有警告,如果您有更好的方案 ...

  8. 定时器Timer不定时

    订餐系统之定时器Timer不定时 经过几天漫长的问题分析.处理.测试.验证,定时器Timer终于定时了,于是开始了这篇文章,希望对还在纠结于“定时器Timer不定时”的同学有所帮助,现在的方案,在系统 ...

  9. Linux时间子系统之(十七):ARM generic timer驱动代码分析

    专题文档汇总目录 Notes:ARM平台Clock/Timer架构:System counter.Timer以及两者之间关系:Per cpu timer通过CP15访问,System counter通 ...

随机推荐

  1. c++重载后置++和--

    c++语言并不要求递增和递减运算符必须是类的成员,但是因为它们改变的正好是所操作对象的状态,所以建议将其设定为成员函数.(但下面的代码为了练习,还是分别采用成员函数和全局函数的方式实现) 业余实现代码 ...

  2. c++全局函数 && 成员函数

    #include<iostream> using namespace std; class Test { public: Test(, ) { this->a = a; this-& ...

  3. 设计和开发ETL系统(二)——启动

    在针对某个维度模型开始ETL系统设计之前,应当完成逻辑设计,草拟高层架构计划,并且为所有的数据元素拟定源到目标映射. ETL的设计过程十分重要: 收集所有的相关信息,包括事物处理系统中所允许的提取处理 ...

  4. ContikiMAC RDC协议

    http://www.mamicode.com/info-detail-1348767.html

  5. Hibernate-【查询】

    01.HQL查询方式 02.QBC查询方式 02.原始SQL查询方式

  6. English Sentenses【no use】

    1.Sorry if I might sound arrogant or offensive. 2.Any further question? 3.How dare you! 4.Try it if ...

  7. C++中函数的返回值

    原文 [ 函数的返回值用于初始化在调用函数处创建的临时对象.在求解表达式时,如果需要一个地方储存其运算结果,编译器会创建一个没有命名的对象,这就是 临时对象.temporary object ] -- ...

  8. linux -- 进程的查看、进程id的获取、进程的杀死

    进程查看 ps ax : 显示当前系统进程的列表 ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps a ...

  9. 关于quartus ii软件中注释乱码问题的解决方法

    乱码现象: 解决办法: 打开文件所在工程找到该verilog文件(后缀名是.v),使用记事本打开,这时你会看到注释好好的没乱码,很高兴是不,不用着急.接下来点击文件再另存为,选择编码:UTF-8,点保 ...

  10. yii2的Console定时任务创建

    Yii2的定时任务可以有两种写法,原理都是通过服务器的定时任务去调用 1.通过调用指定的URL访问 就相当于在浏览器中访问 2.通过console调用 下面我们就来说说Console 是如何实现定时任 ...