第07章-AVR库参考手册.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6 avr-libc 模块文件 6 avr-libc 模块文件 6 avr-libc 模块文件 6.1 assert.h: 诊断 6.1.1 详细描述 #include assert.h 这个头文件定义了调试的帮助。 由于使用本库的许多应用程序没有标准错误输出流可供使用,默认情况下不允许产生一 个可打印的错误信息。应用程序在包含头文件assert.h之前定义宏 __ASSERT_USE_STDERR 错误信息才会被生成。默认情况下,只有调用abort()才会挂起应用程序。 定义 #define assert(expression) 参数: expression 对表达式进行测试。 宏assert()测试给定的参数expression,如果结果为假,调用assert() 的进程将被终止。一 条诊断信息写入stderr 并且调用函数abort(),可以有效终止程序。 如果expression 为真,宏assert()不进行任何操作。 如果编译时定义了宏NDEBUG (例如使用编译器选项-DNDEBUG ),则宏assert()将会 被忽略。 6.2 avr/boot.h:Bootloader 功能支持 6.2.1 详细描述 #include avr/io.h #include avr/boot.h 这个模块定义的宏提供C 语言的接口支持某些AVR 单片机的Bootloader 功能。这些宏 设计为可在所有不同大小的Flash 存储器下工作。 注意: –9 – 6 avr-libc 模块文件 不是所有的AVR 单片机都提供bootloader 支持。详情请查看AVR 单片机的数据手册。 Todo 来自Marek 的Email:小型器件(除了ATmega64/128) ,__SPM_REG 是在I/O 空间中,使用”in” 和”out”指令可以生成较短的代码- 由于bootloader 空间有限,这可能是一个重要的优化方法。 API 用法示例 下面的代码显示了boot API 的典型用法。 #include inttypes.h #include avr/interrupt.h #include avr/pgmspace.h void boot_program_page (uint32_t page, uint8_t *buf) { uint16_t i; uint8_t sreg; //关中断 sreg = SREG; cli(); eeprom_busy_wait (); boot_page_erase (page); boot_spm_busy_wait (); //等待Flash 擦除结束 for (i=0; iSPM_PAGESIZE; i+=2) { //将数据转换成小端模式 uint16_tw=*buf++;w+=(*buf++)8; boot_page_fill (page + i, w); } boot_page_write (page); //在Flash 页存储缓冲数据 boot_spm_busy_wait(); //等待Flash 写入结 //再使能RWW-section //如果要在引导装入后跳转到应用程序需要这样操作 boot_rww_enable (); //重开中断(如果中断原来是打开的) SREG = sreg; }

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档