网站大量收购独家精品文档,联系QQ:2885784924

线路检测报告.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二级项目(嵌入式系统应用) 题 目:基于stm32的路检测 学 号:____20134823091__ 姓 名:_____王秀峰 ____ 班 级:   13自动C1 专 业:   自动化______ 学 院:  _工学部 _ ___ 入学时间: ____2013级 指导教师: 王振华  _ 日 期: 2015年 7月 9日 目录 TOC \o 1-3 \h \z \u 1.线路及实现功能 1 1.1 线路图 1 1.2 功能要求 1 2 实现方法 2 2.1 原理及思路 2 2.2 伪代码 2 2.3 代码实现 2 3 程序测试中出现的问题及解决方法 5 3.1 stm32通信问题 5 3.2 引脚输出电平选择及引脚模式选择 6 4 测试结果与总结 8 4.1 测试结果 8 4.2 总结 9 附录 10 单片机引脚连接图 10 线路连接图 11 程序 11 main.c 11 gpio.c 13 Gpio.h 14 usart.c 14 usart.h 16 PAGE 17 1.线路及实现功能 1.1 线路图 1.2 功能要求 线路连接之后通过单片机检测线路连接是否正确,如果连接正确输出连接正确,如果连接不正确输出连接错误的点,并统计错误点的个数。 2 实现方法 2.1 原理及思路 原理:当导线连接在一起时,信号是可以导通的,基于这点可以将电路中需要需要检测的点连接单片机的引脚,单片机引脚依次置位,并在其中一个引脚置位时检测其他引脚的电平,同为高电平说明两个引脚之间有导线连接,判断该导线连接是否正确。 思路:将GPIOD口的0-11口依次置高电平,每次置高电平后以16位的形式读取GPIOD口的数值,之后对读取到的数据操作,判断是否有错误接线。 2.2 伪代码 = 1 \* GB3 ① 令A=线路正确连接时的数据。 = 2 \* GB3 ② 将第一个引脚置位,读取其他引脚的状态得到数据B。 = 3 \* GB3 ③ 将AB进行比较,如果A=B,则输出正确,如果A!=B,跳到第四步。 = 4 \* GB3 ④ 令B=A|B,得到正确与错误同时存在的数据,在令B=A^B,得到错误点的数据。 = 5 \* GB3 ⑤ 将B进行移位操作,得到最低位为1时,根据移位的次数判断哪个引脚对应的线连接错误,并输出错误的位置。 = 6 \* GB3 ⑥ 将a进行左移操作重复上述操作。 2.3 代码实现 = 1 \* GB3 ① uint16_t n[12]={3,3,140,140,48,48,832,140,832,832,3072,3072}; 代码分析:将正确的数据存入数组n[12]中。 = 2 \* GB3 ② uint16_t a=1; GPIO_Write(GPIOD,a); 代码分析:声明变量a=1;,并将a的值写入GPIO的ODR寄存器中,如图1 图1 uint16_t ReadValue; ReadValue=GPIO_ReadInputData(GPIOD); 代码分析:声明变量ReadValue;通过 GPIO_ReadInputData()函数读取GPIOD的数值。 GPIO_ReadInputData()函数如图2 图2 = 3 \* GB3 ③if(ReadValue ==n[i]) { USART_ClearFlag(USART1, USART_FLAG_TC); printf (the %d point is Right\n,i); } 代码分析:将ReadValue与n[i]进行比较,如果正确则输出。 = 4 \* GB3 ④ uint16_t j,count; else { ReadValue=n[i]|ReadValue; ReadValue=ReadValue^n[i]; for(j=0;j12;j++) { ReadValue =1; if(ReadValue 1) { USART_ClearFlag(USART1, USART_FLAG_TC); printf(the %d point is error ,j); count++; } } } 代码分析:在第三步判断有错误的情况下,执行此过程,首先将ReadValue=n[i]|ReadValue;得到错误位与正确位同时存在的数据。ReadValue=ReadValue^n[i];

文档评论(0)

天马 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档