嵌入式计算系统实验-实验一(IO,Timer).docx

嵌入式计算系统实验-实验一(IO,Timer).docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式计算系统实验:一 学院: 计算机与通信工程 专业: 物联网工程 实验一 I/O,Timer 一、实验目的 1. 掌握通过IARforARM开发嵌入式程序的方法。 2. 掌握对I/O管脚以及Timer的控制。 二、实验内容 ①通过I/O管脚控制LED灯闪烁方式 查看01bsp_leds_debug工程下application目录中的01bsp_leds.c文件。结合运行结果了解代码如何控制led灯的闪烁方式。 改写代码,调整led灯闪烁速率(delay) 改写代码,改变leds灯闪烁顺序。让leds灯按照红绿蓝黄的顺序一次亮灭,然后反顺序亮灭一次,依次循环。 红 绿 蓝 黄 蓝 绿 红 绿 蓝 黄 …. 改写代码,将leds闪烁顺序为: 红亮 绿灭 蓝亮 黄灭 (同时)红 灭 绿亮 蓝灭 黄亮(同时)… ②通过Timer控制LED灯模拟计数器 下载01bsp_timer-debug代码到openmotestm,查看代码效果 阅读01bsp_bsp_timer.c了解代码如何通过Timer控制LED灯的闪灭时间 改写代码,将红色灯的闪灭速度改成每秒2次 改写代码,对红色LED闪灭进行计时。当红色LED闪灭次数打到2次,点亮绿色LED灯,之后红色LED闪灭次数到2次的时候,灭掉绿色灯,点亮蓝色灯…… (用4钟LED灯表示4位二进制数,0位为红,1位为绿,2位为蓝,3位位为黄) 三、实验步骤 1. 实验名称 (1)实验接线图 (2)实验步骤和现象 代码控制LED灯的闪烁方式: 首先红灯亮,红灯灭,红灯状态反转(本代码中应该是灭),红灯闪烁16次 紧接着绿灯亮,绿灯灭,绿灯反转;然后同理,蓝灯和黄灯;然后四盏灯同时亮灭,然后进入轮转。 控制等的亮灭用到了GPIOC-ODR这个变量: GPIOC-ODR |= 0X0008红灯亮; GPIOC-ODR = ~0X0008;红灯灭;GPIOC-ODR ^= 0X0008;红灯反转 【首先0x0008转换为二进制是:0000 0000 0000 1000 取或运算的时候红灯那一位为1,亮;当取反再与运算时,红灯那一位为0,灭;当和1000按位异或的时候,相当于反转】 GPIOC-ODR |= 0X0004;绿灯亮;GPIOC-ODR = ~0X0004;绿灯灭; GPIOC-ODR ^= 0X0004;绿灯反转 【0x0004转为二进制0000 0000 0000 0100】 GPIOB-ODR |= 0X0200;蓝灯亮 GPIO;B-ODR = ~0X0200; 蓝灯灭GPIOB-ODR ^= 0X0200;蓝灯反转 【二进制0000 0010 0000 0000】 GPIOB-ODR |= 0X0100; 黄灯亮GPIOB-ODR = ~0X0100; 黄灯灭GPIOB-ODR ^= 0X0100;黄灯反转 【二进制0000 0001 0000 0000】 GPIOC-ODR |= 0X000C;GPIOB-ODR |= 0X0300; 全亮 【C:0000 0000 0000 1100; B: 0000 0011 0000 0000】 GPIOC-ODR = ~0X000C;GPIOB-ODR = ~0X0300;全灭 GPIOC-ODR ^= 0X0008;在shift函数中用到 改写代码,调整led灯闪烁速率(delay): 代码中通过控制delay函数的delay值来修改闪烁间隔,因此修改delay函数即可: 将: void some_delay(void) { volatile uint16_t delay; for (delay=0xffff;delay0;delay--); } 修改为: void some_delay(void) { volatile uint16_t delay; for (delay=0x00ff;delay0;delay--); } 可使得闪烁速度变快 改写代码,改变leds灯闪烁顺序。让leds灯按照红绿蓝黄的顺序一次亮灭,然后反顺序亮灭一次,依次循环:红 绿 蓝 黄 蓝 绿 红 绿 蓝 黄 …. 将原来主函数中前几个单独控制闪灭的代码删除,在shift函数中修改,最终main函数中代码如下: int mote_main(void) {uint8_t i; board_init(); for (i=0;i9;i++) { leds_circular_shift(); some_delay(); } // reset the board, so the program starts running again board_r

文档评论(0)

k12教育文档 + 关注
实名认证
服务提供商

本人专注于k12教育,英语四级考试培训,本人是大学本科计算机专业毕业生,专注软件工程计算机专业,也可承接计算机专业的C语言程序设计,Java开发,Python程序开发。

1亿VIP精品文档

相关文档