当前位置: 首页 > news >正文

蓝桥杯G431RBT6——定时器中使用led冲突以及led与lcd冲突等一系列问题

本文是解决 同时在 定时器中点灯 与 LCD屏幕显示 冲突异常的问题

我们大家都知道,G431RBT6开发板上led与lcd是冲突的,所以在lcd.c文件中的这三个函数中

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
void LCD_WriteRAM_Prepare(void)
void LCD_WriteRAM(u16 RGB_Code)

的头跟尾分别加这两句话

uint16_t temp = GPIOC->ODR;
GPIOC->ODR=temp;

就可以避免冲突。

但是,如果有定时器的参与点灯的话是否也正常呢?
答案是不行!

示例:
在这里插入图片描述
在这个代码中,我定义的是led灯每隔1s闪烁,但实际情况,其他灯也会闪烁,这是为什么呢?
在这里插入图片描述

在这段lcd的代码中,1和3在上文已经说过是防止led与lcd冲突的代码。但是增加了定时器后,情况就变了,万一代码运行到2的位置,定时器就直接中断回调函数后,是不是刚刚保存下的的temp 的值都还没有来得及赋给GPIOC->ODR。所以就会导致led异常。

解决方案:
在这里插入图片描述
在这里插入图片描述

结论:
定时器中不要执行点灯操作,只需要执行点灯标志位,在while(1)函数中执行点灯就可以避免在定时器中无法点灯的情况!

http://www.lryc.cn/news/326896.html

相关文章:

  • 物联网(IoT)常用的通信协议
  • 关于C/C++,Linux/MacOS/Windows 平台虚拟内存分配
  • 如何在服务器上传/下载文件
  • C++ 之多态虚函数原理及应用
  • 亮数据——让你的IP走出去,让价值返回来
  • spring boot-引入Redis并封装redistemplate操作工具类
  • android 11 SystemUI 状态栏打开之后的界面层级关系说明之一
  • C#___锁(lock)
  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)
  • 数据分析能力模型分析与展示
  • BUG未解之谜01-指针引用之谜
  • 数据库事务编程
  • 专题二_滑动窗口(1)
  • 把本地文件上传到HDFS上操作步骤
  • Leo赠书活动-21期 《一篇讲明白 Hadoop 生态的三大部件》
  • 【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?
  • ArrayList和LinkedList有什么区别?
  • 离线数仓(八)【DWD 层开发】
  • Jenkins用户角色权限管理
  • 简明conan教程
  • LeetCode刷题--- 等差数列划分 II - 子序列
  • kubectl 启用shell自动补全功能
  • 极简wordpress网站模板
  • 【python】(16)python的字典dict按照key或value排序的不同方法
  • 微服务篇-C 深入理解第一代微服务(SpringCloud)_VI 深入理解Zuul服务网关
  • web CSS笔记1
  • js算法记录
  • 球面数据的几何深度学习--球形 CNN
  • MySQL学习笔记------SQL(1)
  • PMP能提前查成绩?还能改分数?别太离谱!