Keil5 开发环境中u16和int错用误区

本人在是准备参加智能小车竞赛的,最近在调试代码中出现了一个问题,在这里先要感谢学长的帮助,不仅帮我解决了这个问题,还对我的学习和调试技巧有了很大的帮助。

我们都知道,u16 是 unsigned short,不能表示负数;但是int可以表示负数,先看下面的一段代码:

void Set_Motor(int left_speed,int right_speed)
{if(left_speed >= 0){SetLeftWhell(0,left_speed);}else{left_speed = fabs(left_speed);SetLeftWhell(1,left_speed);}if(right_speed >= 0){SetRightWhell(0,right_speed);}else{right_speed = fabs(right_speed);SetRightWhell(1,right_speed);}
}

代码出现错误的原因就是在第1行我开始用了u16,后来学长换成了int就成功的解决了。

 else if(Gray1 == 0 && Gray2 == 0)  { Set_Motor(-30,50); }else if(Gray8 == 0 && Gray7 == 0)  { Set_Motor(50,-30); }

看上面部分代码就明白了,我写入了负数,但是u16不能表示负数,这就导致我在调试过程中代码异常,小车执行出现异常,而我一直是认为是这段代码出现了问题,没有写好,浪费了大量时间。

之所以会犯这个错误,忽略了u16和int的区别,我觉得主要原因是这个:

我在学习单片机过程中学习他人的代码中遇到大量地方使用了u8,u16之类的定义,所以我在自己写代码使会常常使用u16,而很少用int,习惯性认为它们通用性,这就是错误的源泉了!

最后再次感谢学长帮助!

Keil5 开发环境中u16和int错用误区相关推荐

  1. SharePoint【调试,诊错系列】-- 开发环境中不同调试对象的Attach方式

    在Sharepoint的开发环境中调试不同的对象有时需要Attach到不同的进程,下面就是一些常见的情况    1.Farm Solution     -----W3WP.EXE    2.SandB ...

  2. STM32入门笔记(02):MDK Keil5 开发环境搭建及新建工程模板教程(SPL库函数版)

    目录 Keil5 开发环境搭建 芯片数据手册 Mec 多功能智能小车底盘开发与使用手册 Mec 主控原理图 Mec STM32F103VET6集成主控板资源分配 Mec OLED 显示内容 如何给 S ...

  3. 让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

    第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改 [文章摘要] Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发 ...

  4. .Net Core通过NPOI在CentOS 7(Docker)环境中导出Excel报错The type initializer for ‘Gdip‘ 的问题

    一.前言 今天在AspNetCore5.0环境中做了一个导出Excel的功能,在开发机器上(windows10)调试正常,但是部署到centos7容器(容器基础环境mcr.microsoft.com/ ...

  5. Thonny开发环境中显示数据曲线

    ▌01 开发MicroPython环境 1.简介 MicroPython 是一款运用在单片机上PYthon3 的版本,基于他对于MCU的开发就变成的非常容易.使用 安装 Thonny 软件环境开发PI ...

  6. 开发环境中实现Lombok消除Java冗余

    Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长.通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往 ...

  7. python运行程序的快捷键_在Python集成开发环境中,可使用快捷键()运行程序。...

    在Python集成开发环境中,可使用快捷键()运行程序. 更多相关问题 如何理解创新能力测试与创新能力的关系? 直埋线路与埋式电力电缆电压<35kv平行时最小间距为(). 放射性物品装卸作业时, ...

  8. oracle vm安装增强功能,Linux 开发环境中为VirtualBox安装增强功能

    VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹.粘贴板以及鼠标无缝移动,主要步骤如下: 1.yum -y update 2.yum -y install g++gcc gcc- ...

  9. virtual box linux 安装增强功能,Linux 开发环境中为VirtualBox安装增强功能

    VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹.粘贴板以及鼠标无缝移动,主要步骤如下: 1.yum -y update 2.yum -y install g++gcc gcc- ...

最新文章

  1. zip压缩多个文件,解压时不包含目录层级
  2. SpringBoot mybatis Interceptor分页实现
  3. DCMTK:DcmItem类的测试程序
  4. python代码风格_Python编码风格,看这篇就够了
  5. C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)
  6. C# 调用 Microsoft.VisualBasic.Collection
  7. spring junit单元测试
  8. 手把手教你制作好看实用的可视化驾驶舱
  9. mysql profiling详解_使用mysql profiling功能剖析单条查询
  10. ]网易游戏游戏开发工程师
  11. yxy小蒟蒻的201111总结
  12. 多线程支持断点续传的文件传输--(摘自大富翁)
  13. 元宇宙持续引发关注,微软计划明年发布相关产品 | 产业区块链发展周报
  14. javascript写的日历控件(收藏)
  15. VS Code:推荐插件 - HTML格式化(包括JS、CSS)
  16. 安卓九宫格上传图片(微信朋友圈,QQ动态)小demo
  17. 实现复数类中的运算符重载(含有double类型)
  18. 1056: 幸运数字 ZZULIOJ
  19. 在一个excel里面直接批量从谷歌地图抓取经纬度(vba部分)
  20. 314-Leetcode 堆排序

热门文章

  1. Redis性能问题排查方法及优化
  2. 编码硬实力之外,程序员的软技能
  3. iphone5连接wifi显示密码错误
  4. 计算机高中期末总结作文,高中生期末总结作文1000字
  5. 苹果MAC电脑OS系统使用Cisco AnyConnect教程
  6. 数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(一)
  7. 国防科大计算机夏令营经验分享,保研经验|理工科五所985高校夏令营经验
  8. 社交媒体是如何沦为黑客“赚钱”工具的?
  9. 在linux上面如何解决高iowait问题
  10. 百度推出区块链宠物“莱茨狗”