摘要: 好记性不如烂笔头系列之按键扫描 整个按键原理图如下图所示: 就是典型的行列扫描。 通过74HC238设置选择行,然后再扫描列,读取col的8个IO口,为1即按键被按下。 此方案采用3+8=11个IO口,扫描8*8个按键。 工程代码比较简单,放网盘里,以后需要再去具体看吧。 阅读全文
posted @ 2021-12-20 13:41 xjxcxjx 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 这个数码管是个通用性数码管,网上资料很多,拿来直接套就行。 本项目是通过一个595芯片控制两个数码管的显示,Q7为1时左边的数码管显示,为0时右边的数码管显示 不需要初始化,直接把IO口初始化下即可。 /*GPIO输出引脚*/ gpio = GPIO_PIN_8 | GPIO_PIN_9 | GPI 阅读全文
posted @ 2021-12-14 18:18 xjxcxjx 阅读(690) 评论(0) 推荐(0) 编辑
摘要: 使用Timer4的CH1输出占空比50%,频率800KHz的PWM波形 4 void TimerConfig(void) 5 { 6 timer_deinit(TIMER4); 7 rcu_periph_clock_enable(RCU_GPIOA); 8 rcu_periph_clock_enab 阅读全文
posted @ 2021-12-06 18:18 xjxcxjx 阅读(3185) 评论(0) 推荐(0) 编辑
摘要: WS2811的时序波形如下图: 注意:这里是低速模式(400KHz)的时间要求,我们用的是800KHz,需要把时间除以2. 我们的RGB方案是将RGB数据通过DMA发送到timer的CCR寄存器,动态改变timer输出的PWM占空比,来驱动RGB。这里DMA发送给timer的数据,是我们经过转换的R 阅读全文
posted @ 2021-12-03 14:32 xjxcxjx 阅读(4769) 评论(0) 推荐(0) 编辑
摘要: 时钟就是整个系统正常运行的命脉,时钟配置不对或者理解不全,后面定时器的配置就会出问题 系统运行时首先是从下图这里开始,先加载SystemInit函数,然后加载main函数 SystemInit()是厂家封装好的,不用改动,只要理解就行了。 void SystemInit (void) { /* FP 阅读全文
posted @ 2021-12-03 12:58 xjxcxjx 阅读(1958) 评论(0) 推荐(0) 编辑
摘要: 直接照着上个项目的GD32F407的RGB驱动移植就行。 1 /*!************************************************************************************************** 2 \brief ch0 - rg 阅读全文
posted @ 2021-11-30 10:38 xjxcxjx 阅读(1052) 评论(0) 推荐(0) 编辑
摘要: 以下是以Gd官方代码为例 1 /*! 2 \brief main program 3 \param[in] none 4 \param[out] none 5 \retval none 6 */ 7 int main(void) 8 { 9 /* configure Systick and LCD 阅读全文
posted @ 2021-11-19 18:11 xjxcxjx 阅读(4846) 评论(0) 推荐(1) 编辑
摘要: Windows下使用git发现了一个大坑,导致我修改了几天的代码丢失了。 不过幸好大部分都还记得,而且修改量也不大,自己一点一点又写出来了。 比如我主线有节点: ①->②->③->④->HEAD : Master 然后我进行了如下步骤的操作: 第一步:我回到节点②进行工作,修改了一系列代码,过了几天 阅读全文
posted @ 2021-10-19 11:04 xjxcxjx 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 公司其他项目是用的keil 525,而因为我们部门GD32F407已经用了keil 532,为了减少keil版本的使用,决定在keil 532上进行GD32F450的工作。 网上根本就没有这方面的信息,GD公司的支持也是垃圾,从使用407开始,所遇到的所有问题,么有一个能帮助解决的,最后还都是我们自 阅读全文
posted @ 2021-09-15 16:03 xjxcxjx 阅读(863) 评论(0) 推荐(0) 编辑
摘要: 今天遇到了这个问题,网上也没找到答案,后来发现是自己代码写的问题。 for(int i=0; ; i++) {...} 当for循环处在这种情况下时,会导致for混合后面的代码无法打断点。 分析其原因,可能是因为此处处在死循环(相当于死循环)。 虽然int是32位的,取值范围-2147483648 阅读全文
posted @ 2019-11-07 18:16 xjxcxjx 阅读(383) 评论(0) 推荐(0) 编辑