首页 kl25定时器实验

kl25定时器实验

举报
开通vip

kl25定时器实验kl25定时器实验 嵌入式系统原理与应用实验报告 专业班级:物联1301 姓名:齐亨 学号:13516110 组员:齐亨 实验日期:2016年5月13日 实验名称:定时器实验, Systick 和 TPM, 一、实验目的 1、掌握 M0+内核时钟和 KL25 TPM 定时器计数功能的原理和使用方法。 2、掌握 KL25 PWM 功能的使用。 二、实验内容 1、导入工程,运行程序,观察实验现象; 2、 对照课本和工程,理解 Systick 和 TPM 计数功能以及 PWM 功能的编程步骤; 3、 修改 ...

kl25定时器实验
kl25定时器实验 嵌入式系统原理与应用实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 专业班级:物联1301 姓名:齐亨 学号:13516110 组员:齐亨 实验日期:2016年5月13日 实验名称:定时器实验, Systick 和 TPM, 一、实验目的 1、掌握 M0+内核时钟和 KL25 TPM 定时器计数功能的原理和使用方法。 2、掌握 KL25 PWM 功能的使用。 二、实验内容 1、导入工程,运行程序,观察实验现象; 2、 对照课本和工程,理解 Systick 和 TPM 计数功能以及 PWM 功能的编程步骤; 3、 修改 Systick 或 TPM,使时间显示格式为 xx:xx:xx (如 19:01:00); 4、 修改 PWM 工程,使蓝灯的亮度可以随时间慢慢变暗或变亮。 三、实验过程 1、原理图 2、基本原理 计数器输入的计数脉冲源 系统的时钟振荡器输出脉冲经12分频后产生; T0或T1引脚输入的外部脉冲源。 四、编程 1.程序流程图 所用寄存器名称及其各个位 1、SysTick定时器模块的寄存器地址 2、控制及状态寄存器SYST_CSR 3、Sys Tick优先级寄存器 主要程序代码 #include "includes.h" //包含总头文件 void Hex_to_ASCII(uint_8 *temp); int main(void) { //1. 声明主函数使用的变量 uint_32 remember; //2. 关总中断 DISABLE_INTERRUPTS; //3. 初始化外设模块 light_init(RUN_LIGHT_BLUE,LIGHT_OFF); //初始化蓝色RUN灯 uart_init (UART_0,MCGPLL, 9600); //串口0初始化, 总线时钟24000Khz,波特率9600 uart_send_string(UART_0, "Hello SYSTICK!\r\n"); //发送开始信息 systick_init(CORE_CLOCK_DIV_16, 10); // 初始化SysTick周期为10ms,时钟源为外部时钟 //4. 给有关变量赋初值 g_time[0] = 0; //"时分秒"缓存初始化(00:00:00) g_time[1] = 0; g_time[2] = 0; remember = g_time[2]; //临时变量remember初始化 //5. 使能模块中断 uart_enable_re_int(UART_0); //启动串口1接收中断 //6. 开总中断 ENABLE_INTERRUPTS; //进入主循环 //主循环开始 ================================================================= = for(;;) { if (g_time[2] != remember) //判断秒钟是否发生变化 { light_change(RUN_LIGHT_BLUE); //蓝色运行指示灯(RUN_LIGHT_BLUE)状态变化 // uart_sendN(UART_0,3,g_time); remember=g_time[2]; Hex_to_ASCII(g_time); } //以下加入用户程序 -------------------------------------------------------- }//主循环end_for //主循环结束 ============================================================== return 0; } void Hex_to_ASCII(uint_8 *temp) { uint_8 a_time[10]; a_time[0] = *temp/10+48; a_time[1] = *temp%10+48; a_time[2] = ':'; a_time[3] = *(temp+1)/10+48; a_time[4] = *(temp+1)%10+48; a_time[5] = ':'; a_time[6] = *(temp+2)/10+48; a_time[7] = *(temp+2)%10+48; a_time[8] = '\r'; a_time[9] = '\n'; uart_sendN(UART_0,10,a_time); } 五.实验问答 当利用SysTick定时器设计的电子时钟,出现走快了或走慢了时,如何调整, 答:初始化相关模块: SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_ITConfig(DISABLE); SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); SysTick_SetReload(9000); // 设定SysTick达到1ms计数结束 SysTick_ITConfig(ENABLE); // 使能SysTick中断 中断处理: void SysTickHandler (void) { if (TimingDelay != 0x00) TimingDelay--; } 延时代码: void Delay(u32 nTime) { SysTick_CounterCmd(SysTick_Counter_Enable); // 使能 SysTick计数器 TimingDelay = nTime; // 读取延时时间 while(TimingDelay != 0); // 判断延时是否结束 SysTick_CounterCmd(SysTick_Counter_Disable); // 关闭SysTick计 数器 SysTick_CounterCmd(SysTick_Counter_Clear); // 清除SysTick计数 器 } 应用代码: Delay(300); // 延时 300ms 六.实验小结 通过该实验的学习,熟悉了M0+内核时钟和 KL25 TPM 定时器计数功能的原 理和使用方法;大概的掌握 KL25 PWM 功能的使用;进一步的熟悉了汇编程序C 语言编程。
本文档为【kl25定时器实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_882336
暂无简介~
格式:doc
大小:73KB
软件:Word
页数:0
分类:
上传时间:2017-11-16
浏览量:60