从51跳新唐cortex学习3——细说新唐两种定时器
的定时器我们已经是相当熟悉啦。但是,对于第一次接触新唐,第一次接触cortex的定时器一样,都是加1计数,但是功能和容量变大了),包括4个32位定时器(里面放24位的数据),还有分频功能。TMER0到TMER3中我们用的是计数)。这是一种简单的24位写清零、递减、子封装灵活控制的计数器。他可以作为rtos变成一样的啦),也就是中断函数放在、首先为系统时钟选择时钟源(晶振)。
、之后配置系统定时控制寄存器SysTick
到23位
到23位
、和上面一样,首先配置时钟控制寄存器,选择时钟源(晶振)
、定时控制器TMR配置
种模式5个时钟源什么的,好多,所以我们基本上是先查自己需要的模式,在进行设置。
位。
跳新唐cortex——思想转变和程序详解中,都是以讲述新唐思想、编程思想为主。但是近期看了一下大家的笔记,可能更是热衷于贴出来程序。呵呵 不过我也从大家的程序中找到了许多应用的知识。所以,在此,我也贴上一个定时器有关的例程,以供大家对照、比对、参考学习。
本例程led_bee_timer 主要是使用新唐中的两种定时器,分别用作led灯和蜂鸣器的计时。其中,使用系统定时器(SYSTICK)来为蜂鸣器定时,蜂鸣器间歇性开关发声;使用定时器(TMR0)来控制LED流水灯定时。两种定时器都使用了中断函数进行目标的控制,大家要注意两种中断的异同。例程中保留了调试时的东西,希望大家也可以从中看到些许调试技巧。例程中为了方便,并没有套用程序框架,是进行的裸编程,而适合新唐的程序框架,笔者也正在摸索之中,哪位有比较成熟的框架结构,还希望共享一下。呵呵,先啰嗦到这里,下面附上例程:
#include"include.h" E_TYPE_LED temp_led; ; //uint8_t test = 0; void AllLedOff() { DrvGPIO_SetBit(E_GPA,); DrvGPIO_SetBit(E_GPA,); DrvGPIO_SetBit(E_GPA,); DrvGPIO_SetBit(E_GPA,); } void Tim0CALLBACK(void) //定时器0中断函数 执行LED { // DrvGPIO_ClrBit(E_GPA,2); // DrvGPIO_ClrBit(E_GPA,5); switch(temp_led++)//(test++) { case LED1 ://1: AllLedOff(); DrvGPIO_ClrBit(E_GPA,); break; case LED2 ://2: AllLedOff(); DrvGPIO_ClrBit(E_GPA,); break; case LED3 ://3: AllLedOff(); DrvGPIO_ClrBit(E_GPA,); break; case LED4 : //4: AllLedOff(); DrvGPIO_ClrBit(E_GPA,); break; default : AllLedOff(); temp_led = LED1;//test = 1; break; } } void BeeOn() //蜂鸣器 { DrvGPIO_SetBit(E_GPB,); //怎么读入某位的值 } void BeeOff() { DrvGPIO_ClrBit(E_GPB,); } void SysTick_Handler(void) //系统定时器中断函数 { flag_100ms++; ) { // DrvGPIO_ClrBit(E_GPA,4); // DrvGPIO_SetBit(E_GPA,5); BeeOn(); } ) && (flag_100ms <= )) { // DrvGPIO_ClrBit(E_GPA,5); // DrvGPIO_SetBit(E_GPA,4); BeeOff(); } ) { flag_100ms = ; } } void GPIOInit() { DrvGPIO_Open(E_GPA,,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,,E_IO_OUTPUT); DrvGPIO_Open(E_GPB,,E_IO_OUTPUT); } void TIMERInit() { DrvTIMER_Init(); DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC,); DrvTIMER_Open(E_TMR0,,E_PERIODIC_MODE); //每秒tick数 每秒tick一次 DrvTIMER_SetTimerEvent(E_TMR0,,(TIMER_CALLBACK) Tim0CALLBACK,); //定时器的tick周期 每秒1次 // DrvTIMER_Open(E_TMR0,1,E_PERIODIC_MODE); //每秒tick数 每秒tick一次 DrvTIMER_EnableInt(E_TMR0); DrvTIMER_Start(E_TMR0); } void SYSCLKInit() { DrvSYS_SelectSysTickSource(); SysTick->CTRL = 0x00000003; SysTick->VAL = 0x00000000; SysTick->LOAD = 0x6000; //100ms } void SysInit() { UNLOCKREG(); SYSCLK->PWRCON.XTL12M_EN = ; LOCKREG(); GPIOInit(); //GPIO 初始化 TIMERInit(); SYSCLKInit(); } int main() { SysInit(); ) { ; } }
从51跳新唐cortex学习3——细说新唐两种定时器的更多相关文章
- ElasticSearch 学习记录之Text keyword 两种基本类型区别
ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...
- JavaWeb学习 (二十)————JavaWeb的两种开发模式
一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示
- ToStringBuilder学习(二):两种方法用法优缺点及一个问题
研究ApacheCommon源码, 先从一个最简单的开始,即围绕Object类里的toString方法自动化实现的一系列类. 怎么来自动化地实现toString方法, 有两种:反射和手 ...
- 五分钟学习React(五):React两种构建应用方式选择
经过这四期的讲解,我们从Hello World应用入手,解释了React最重要的概念JSX,以及两种不同模式的应用构建方法.这一讲我们着重对比传统模式和新模式下的React项目构建,从而为初学者提供学 ...
- SQLite3学习笔记----创建数据库的两种方式
今天研究学习SQLite,刚开始创建数据库,就遇到了一个坑,是自己粗心了,特记录一下. 实验环境: OS:Ubuntu18.04 创建数据库名称:test.db 实验步骤: 1.检查是否已经安装了SQ ...
- 【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现
1.XML与JSON两种数据结构的优缺点 1> XML 优点: 格式统一, 符合标准 容易与其他系统进行远程交互, 数据共享比较方便 缺点: XML文件格式文件庞大, 格式复杂, 传输占 ...
- TestLink学习三:发送邮件的两种配置方法
第一种:修改config.inc.php中的[smtp],配置为默认本地发送,用hotmail用户做接收,调试成功!(本人未尝试这种) // ----------------------------- ...
- python 学习笔记(二)两种方式实现第一个python程序
在交互模式下: 如果要让Python打印出指定的文字,可以用print语句,然后把希望打印的文字用单引号或者双引号括起来,但不能混用单引号和双引号: >>> print 'hello ...
- Python开发【笔记】:pymsyql 插入一条数据同时获取新插数据的自增id的两种方式
一.通过cursor.lastrowid import pymysql.cursors # Connect to the database connection = pymysql.connect(h ...
随机推荐
- 权威指南之脚本化jquery
jqury函数 jquery()($())有4种不同的调用方式 第一种是最常用的调用方式是传递css选择器(字符串)给$()方法.当通过这种方式调用时,$()方法会返回当前文档中匹配该选择器的元素集. ...
- VS快捷方式小技巧
VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 C ...
- HDU2955-Robberies
描述: The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usual ...
- git配置ssh
$ git config --global user.name "yourname"$ git config --global user.email "youremail ...
- [LeetCode]题解(python):137-Single Number II
题目来源: https://leetcode.com/problems/single-number-ii/ 题意分析: 给定一个数组,数组里面每一个数字都出现了3次除了一个,找出那个数.要求时间复杂度 ...
- ExtJS 修改load paging时的参数
ExtJS 的pagingToolbar 在翻页的时候传入的参数是固定的 分别是start 和 limit(其中limit的值就是store.pageSize的值) 如何在每次翻页的时候传入自己的参 ...
- java核心技术学习笔记之一程序设计概述
Java 核心技术之一程序设计概述 一. Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...
- C++可变参数的另一种实现
大家熟知的C库函数printf函数就是一个可变参数函数,它是怎么实现的呢?不过他实现是有条件的,必须函数参数的入栈顺序为从右向左的顺序,也即函数的形参,在函数调用之前,必须是最右边的参数先入栈,并且参 ...
- windows 下面的内存泄漏排查.
内存泄漏排查 一下本人只是简单的介绍一个实用, 如果读者很感兴趣, 可以查阅msdn自己去深入调查相关的API和原理. API 介绍 1. 马上打印泄漏信息:_CrtDumpMemoryLeaks() ...
- Fastboot的使用简单教程
大家都知道HTC手机重新启动进入所谓的project模式,就是HBOOT,然后能够进入FASTBOOT界面,在这个界面.我们能够在电脑端能够做非常多事,特别是HBOOT被改动过,假设是ENG S-OF ...