之前在51单片机里面定义bit类型的变量是这样:

bit flag = 0;

然后今天在32里面写:

static u8 key4_flag = 0;

然后我在后面进行判断:

 else if(keycode == 4){key4_flag = ~key4_flag;if(key4_flag == 1){TIM_Cmd(TIM2, ENABLE);LCD_ClearLine(Line8);LCD_DisplayStringLine(Line8 ,"       Running   ");}else if(key4_flag == 0){TIM_Cmd(TIM2, DISABLE);LCD_ClearLine(Line8);LCD_DisplayStringLine(Line8 ,"       Pause   ");}}

乍一看好像没什么问题,可是把程序下载到板子上,就是不会正常运行,每次都是无法执行key4_flag == 1 里面的程序,试了好久,突然想起来,key4_flag 我定义的是一个u8类型的,也就是说对key4_flag取反之后,它的状态变化是:

0000 0000->1111 1111-> 0000 0000->1111 1111...

我一直以为是:

0->1->0->1...

尬的一批。。。
所以就导致根本无法进入key4_flag == 1 里面的程序,因为1111 1111 != 1
我一直以为还是51里面的bit类型,希望大家不要犯类似的错误,如果在32里面定义u8类型的flag,并且直接使用取反运算符的话,一定要和0000 0000(或者是0)、1111 1111(不能是1)来进行判断。
正确的判断应该是这样的:

 else if(keycode == 4){key4_flag = ~key4_flag;if(key4_flag == 0xff){TIM_Cmd(TIM2, ENABLE);LCD_ClearLine(Line8);LCD_DisplayStringLine(Line8 ,"       Running   ");}else if(key4_flag == 0x00){TIM_Cmd(TIM2, DISABLE);LCD_ClearLine(Line8);LCD_DisplayStringLine(Line8 ,"       Pause   ");}}

如果是u16类型的flag,那么就应该是判断key4_flag == 0xffff
如果是u32类型的flag,那么就应该是判断key4_flag == 0xffffffff

不能正常判断按键函数中的Flag相关推荐

  1. 编写一个函数,该函数能判断一个英文句子str(带空格)中是否含有某个单词w,如“How old are you?”含有“old”。在main函数中输入一个英文句子,再输入一个单词,如果英文句子中含有那

    题目要求: 编写一个C程序,实现以下功能: 编写一个函数,该函数能判断一个英文句子str(带空格(升级版))中是否含有某个单词w,如"How old are you?"含有&quo ...

  2. 如何用计算机的if,按键精灵中如何使用IF函数?

    按键精灵是一款非常好用的可模拟键盘鼠标操作的编程软件.使用按键精灵解放双手,内置了多种命令,提供全界面化的操作支持动作录制和回放功能,还有强大的插件功能供用户选择.很多的朋友们子在使用按键精灵软件的时 ...

  3. R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等

    R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如.粗体.斜体等 目录

  4. PHP array_key_exists() 函数(判断某个数组中是否存在指定的 key)

    定义和用法 array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false. 语法 array_key_exists(ke ...

  5. 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )

    文章目录 一.C 项目开发代码规范 一.C 项目开发代码规范 上一篇博客 [C 语言]字符串模型 ( 键值对模型 ) 中 , 完成了字符串的 键值对 查找功能 , 代码不太规范 ; C 项目开发代码规 ...

  6. c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...

    FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法 时间:2019-08-10 14:39:47  来源:  作者:  所属栏目:其他服务端 这里将告诉您FreeRT ...

  7. C语言试题三十一之判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。

    1. 题目 请编写函数function,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no.回文是指顺读和倒读都是一样的字符串. 2 .温馨提示 ...

  8. 中if判断中文_Excel中的逻辑函数的使用技巧 IF函数中的多条件判断

    IF函数的基本结构很简单,真正使用的过程中,在于条件判断的写法,如何构造一个正确判断条件才是关键,也就是下图中A的构造才是IF函数的关键 交集.并集和求反函数应用技巧 常用的逻辑关系有3种,即[与]. ...

  9. JavaScript 中判断一个函数的 this 绑定

    this 是一个很特别的关键字,被自动定义在所有函数的作用域中.this 实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用(这句话不适用于箭头函数,想了解箭头函数的可以前往ES6 ...

最新文章

  1. SQL Server 运行计划操作符具体解释(2)——串联(Concatenation )
  2. Autolayout学习(1)-了解Autoreszing
  3. 《小程序个人信息保护研究报告》解读
  4. 转行学python后悔了-转行学Python可以吗?
  5. 微信小程序 文字居中
  6. ROS知识【12】:用户的功能包覆盖系统功能包
  7. ios开发text kit_iOS富文本(三)深入使用Text Kit
  8. treelist自动定位行_国内首创!金川集团千米深井双定位补偿摇台投用
  9. android sdk根目录,Android SDK根目录中的SDK Manager.exe双击打不开,为什么?
  10. win10创建mysql数据库吗_win10 sqlite3创建的数据库文件在哪
  11. Whistle抓包详细使用教程
  12. PyTorch实战 | 文本情感分类任务 | LSTM与LSTM+Attention | TextCNN
  13. 基因表达矩阵中排除表达量低的样本和基因
  14. 【记录贴】联想笔记本小新进入BIOS的方法
  15. 接口文档管理工具showDoc
  16. 【应用实例】单片机PM2.5空气监测仪--攀藤G5激光PM2.5传感器
  17. ThreadPoolTaskScheduler实现动态管理定时任务
  18. 苹果手机服务器找不到,电脑找不到苹果手机热点
  19. 可视化文本处理模板代码
  20. x:Name与x:Key

热门文章

  1. 我的conky 配置(拆分版)
  2. ASP.NET字符显示不正确的解决方法
  3. 转载sanmusoft 论电脑报论坛的挂掉及电脑报的最后倒掉
  4. Redis缓存异常的容错实现方法( .net)
  5. 【报告分享】2019-2020年企业调薪参考手册.pdf(附下载链接)
  6. Multi-View 3D Reconstruction
  7. 通俗易懂!视觉slam第四部分——slam刚体三维空间运动
  8. 清华大学刘知远教授:如何写一篇合格的NLP论文
  9. php 面向接口,php开发app接口
  10. 从四大造字法看文字所承载的文化_对央视“汉字的魅力”讲授之管见(《天津教育报》2012年6月15日)...