自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 利用sin/cos原理驱动步进电机

本文主要以两相电机为例,为总结使用;步进电机的运行性能与它的步进驱动器有密切的联系,可以通过驱动技术的改良来克服步进电机的缺点。相对于其他的驱动方式,细分驱动方式不仅可以减小步进电机的步距鱼提高分辨率,而且可以减少或消除低频振动,使电机运行更加平稳均匀。总体来说,细分驱动的控制效果最好。因为常用低端步进电机伺服系统没有编码器反应,所以随着电机速度的升高其内部控制电流相应减小,从而造成丢步现象。所以在速度和精度要求不高的领域,其应用非常广泛。细分驱动精度高;细分是驱动器将上级装置发出的每个。

2024-03-26 12:04:43 770

原创 STM32工程报错 warning: At end of source: #12-D: parsing restarts here after previous syntax error

原来是有括号的,不做标识符来处理,而新版的,如图,直接说明了出来,那就没有必要,可以根据C/C++知识自己去推断;在C/C++选项卡里,把STM3210X_HD从prepocessor symbol define 里面删掉。在csdn上面直接下载的旧版的STM32标准库和例程,偷懒没有去官网下载最新版,所以有些许差别。这么做的原因:在老版本的官方STM32F10X.H文件里,这句话不是这么写的,若没记错的话,是。

2024-03-19 12:17:46 502

原创 GD32 触发HardFault_Handler

软件环境:kiel5 V5.35.0.0. MDKV5.35.0.2。现象:程序运行一段时间后就电机会重启,时间大概是20秒。芯片型号:GD32F130C8T6。原因:CRC校验算法中有数组溢出。

2024-02-23 13:53:53 445

原创 AS5600磁编码器开发记录

它指的是一个电路中的漏极(也称为漏电极)被断开,从而使电流不能流过该极;漏极开路输出需要接一个上拉电阻(上图中的R),可以利用改变上拉电源的电压,改变输出电平。上拉电阻是接在输出引脚和输出电压(上图中的Vcc)之间,可以获得高电平输出。当内部N沟道场效应管关闭的时候,上拉电阻R会把输出拉到高电平,此时场效应管的漏电流将非常的小。当内部N沟道场效应管导通的时候,它会把输出引脚拉到接近GND,此时的电流是根据欧姆定律计算的(I=Vcc/R)参考原文链接。

2024-02-23 13:51:01 459

原创 两相步进电机驱动原理

本文主要以两相电机为例,为总结使用;步进电机的运行性能与它的步进驱动器有密切的联系,可以通过驱动技术的改良来克服步进电机的缺点。相对于其他的驱动方式,细分驱动方式不仅可以减小步进电机的步距鱼提高分辨率,而且可以减少或消除低频振动,使电机运行更加平稳均匀。总体来说,细分驱动的控制效果最好。因为常用低端步进电机伺服系统没有编码器反应,所以随着电机速度的升高其内部控制电流相应减小,从而造成丢步现象。所以在速度和精度要求不高的领域,其应用非常广泛。细分驱动精度高;细分是驱动器将上级装置发出的每个。

2024-01-25 15:37:19 941

转载 C语言U / C语言U

无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。这里书上打印错了, 应该是~0U, 意思就是无符号整型0, 然后~表示按位取反,最后的结果就是全是1,这个函数的作用是求出本台计算机中,unsigned型的数据是32位的还是别的。无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。数字后面带个U是表示无符号类型的数据。

2024-01-24 16:28:52 123

原创 GD32E230C8T6《调试篇》之 FMC(闪存)的读写 + USART打印

与GD32E103不同的是E230没有gpio_init这个库函数,所以参考例程是有帮助的;可以看到E230有64K的主flash,这里我选了0x0800 FC00,操作最后一页;说明使用PA9、 PA10的USART0时要选择AF1;初始化USART0 时才有了这两句;共同监督,一起努力!

2024-01-24 10:05:37 599

原创 GD32E230C8T6《调试篇》之 (软件) IIC通信(主机接收从机) + GN1650驱动芯片 + 按键 + 4位8段数码管显示 (成功)

IIC总线的SDA和SCL两根总线需要上拉,使总线处于空闲状态。IIC总线一共有两种状态、四种信号。除此之外还需要了解IIC总线的数据有效性。

2024-01-20 14:40:32 1333

原创 GD32E230C8T6《调试篇》之 (软件) IIC通信 + GN1650驱动芯片 + 4位8段数码管显示(成功)

注意GN1650是先传高位再传低位,我之前就是先传的低位,所以数码管不显示,此外要观察芯片对应的时序图,比如开始条件是SCL和SDA都为高电平,SDA先为低电平,SCL再为低电平,结束条件反之亦然;还有延时函数之前用的系统的delay_us();后来封装了一个简短的 IIC_Delay();时序的频率会更快;

2024-01-17 16:15:41 413

原创 GD32E230C8T6《调试篇》之 (硬件) IIC通信 + GN1650驱动芯片 + 4位8段数码管显示(未成功)

芯片型号更换成E230了I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。

2024-01-17 11:39:12 935

原创 GD32E230C8T6《调试篇》之 (硬件) IIC通信 + GN1650驱动芯片 + 4位8段数码管显示(成功)

之前调试失败的主要原因找到了,i2c_data_transmit(I2C0,Address);不能这样传送从机的地址,我是受了软件IIC的影响,以为连续送两次就行;必须用下面的语句传送从机地址,i2c_data_transmit是用来传数据的;花了半天搞定,所以不能只写代码,不看芯片规格书;也不能只看规格书,不用代码验证;最后,连续插拔数码管几十次,硬件IIC确实容易死掉(芯片没有死,因为我的测试脚有高低电平输出),只有重新上电运行;以上就是使用GN1650的过程。

2024-01-17 11:10:17 515

原创 GD32E103C8T6《调试篇》之独立看门狗(FWDGT)

两个看门狗定时器外设,独立看门狗定时器(FWDGT)和窗口看门狗定时器(WWDGT)。看门狗定时器(WDGT)是一个硬件计时电路,用来监测由软件故障导致的系统故障。它们使用灵活,并提供了很高的安全水平和精准的时间控制。两个看门狗定时器都是用来解决。看门狗定时器在内部计数值达到预设门限的时候,会触发一个复位。当处理器工作在调试模式。的时候看门狗定时器定时计数器可以停止计数。注释喂狗,芯片就会不断重启,时间大概1s;这两段来自用户手册。

2024-01-09 18:10:40 519

原创 GD32E103C8T6《调试篇》之ADC + USART打印

ADC的位数是其精度的描述,又或者说是最小分辨率,即数字值变化1对应的模拟信号变化是多大。查看GD32E103的用户手册,第12章写有,MCU片上集成了12位逐次逼近式模数转换器模块(ADC),可以采样来自于16个外部通道和2个内部通道上的模拟信号。不插温控座子时,走红色这条线,所以ADC0的值应该是满值4095或者接近4095(不同芯片有所不同,我的ADC为12的精度,2的12次方=4096,范围0-4095),但是我感觉ADC0的值受主芯片时钟和ADC时钟分频的影响,ADC0波动范围有变化;

2024-01-08 14:58:46 1091

原创 GD32E103C8T6《调试篇》之USART + 超时检测 (附代码)

PCB板是现成的,之前用的USART0,发现不对;在老工程师的指导下,发现必须要根据板的IO配置来编程。芯片:GD32E103C8T6编译环境:keil V5.35.0.0 / MDK-ARM V5.35.0.2。

2024-01-05 09:57:52 1188 1

原创 Keil MDK5中no browse information available in ‘xxx’的问题

参考博客:https://blog.csdn.net/bean_business/article/details/109189445。解决办法:魔法棒-》Output,勾选Browse Information,重新编译。我的keil5 MDK经常出现定位不到函数定义的问题。

2023-12-30 09:58:30 429 1

原创 GD32芯片烧录工具不能在线下载时检查步骤

公司产品的主芯片大部分使用GD32E和GD32F系列,之前开发使用的是J-link和ST-link;发布后的代码用正点原子烧录器下载后会自动给芯片加密,所以当产品在发布后又出现问题时,研发狗本狗要进行的一个步骤就是解除芯片保护;(此时芯片写不进也读不出)但是每次用J-link擦除真的心累,之前一篇博客有写;在老工程师的建议下,还是所以拜托公司斥巨资299大洋在官网买了一个和GD芯片配套的开发工具GD-link;使用感受就是爽!

2023-12-29 16:13:00 638 1

原创 输入信号超出范围,调整为1600x900@60Hz

今天一大早来公司,我的小显示器突然弹出输入信号超出范围,调整为1600x900@60Hz。右键-》显示设置-》显示器分辨率-》改为1600x900 不起作用。之后参考这篇博客问题解决。

2023-12-28 09:13:31 772 1

原创 GD32E103C8T6获取芯片系统ID

用一个数组g_uuid1[3]存放三个地址的内容;用KEIL5仿真调试,可以看出每块GD32E230C8T6芯片都有不同的ID号,每个地址的内容都可以存放2的32次方大小的数据。查看GD32E103C8T6数据手册。

2023-12-26 14:57:38 573 1

原创 gpio_input_bit_get(GPIOB,GPIO_PIN_8)==0注意赋值时候的优先级问题

上面加了()正确,下面没加不正确。

2023-12-22 17:51:48 96

原创 GD32E103C8T6将内部晶体起振方式改为外部8M晶体起振

在system_gd32e10x.c文件里将IRC(尾部IRC是内部晶体的意思)注释,放开对应72M HXTAL(尾部HXTAL是外部晶体的意思)的注释,这里我的内部程序已经经过了分频、倍频,所以不能乱选,根据自己需求选择。选择以后,可以看到菜单中的Define,如图所示,文本框中输入的预编译的内容中有HXTAL_VALUE,没有GD32E103V_EVAL ,所以 所以啊 友友们发现了吗。我们就是要改这里,将HXTAL_VALUE删去,加入GD32E103V_EVAL。这两个宏定义就起作用了;

2023-12-19 10:10:11 183 1

原创 keil5编译出错 .\output\GD32E230C_prj.axf: Error: L6218E: Undefined symbol TIMER2_init

错误原因:在main.c里调用TIMER2_init()函数,但是在TIMER2.c TIMER2.h文件中,又叫另一个名字MYTIMER2_Init();所以main.o链接不到目标文件。

2023-12-14 18:59:16 80 2

原创 使用J-LINK解锁GD32E103的读保护

第一篇解决了J-Link不能连接目标MCU的问题,第二篇解决了j-link操作步骤的问题。开始用keil5下载时报错,其实就是芯片被保护了,不能往里面烧录程序,所以要解除保护。打开j-link按第二篇博主的操作步骤来就可以了。我看了很多博客,我参考的有用的博客有这两篇。不上板子,之后给板子供了12V的电源,再。目标芯片:GD32E103C8T6。我的问题是用j-link时一直。烧录工具:J-Link。

2023-11-11 18:04:56 367 1

原创 智能停车收费系统——所遇问题集合

想再二维码之间插入一张图片,但是数据库没有png.h库,二维码生成不了;解决办法:这个想法毙掉了,重新换了下载了QRcode库。//解决:删除工程影子目录、重新构建、ui控件删除重建、通过connect关联、复制到新建文件。解决:删除工程文件里相应文件的名字,如resource.cpp。因为他们都开了防火墙,此外IP地址会变更。

2023-09-14 15:39:58 109 1

原创 qt:构建失败,输出mingw32-make: *** [debug] Error 2 14:35:34: 进程“C:\Qt\Qt5.10.1\Tools\mingw530_32\bin\mingw3

3.构建项目时只选择自己电脑对应的编译器32或者64。2.将文件单独放到其他盘的某个文件夹下再打开。遇到问题,记录一下,积少成多~

2023-08-22 19:11:53 673 1

原创 qt学习笔记———线程

涉及知识点:第一:两个线程互斥,这里使用到了互斥锁,使用前加锁,使用后解锁。第二:重写基类QThread的run方法。

2023-08-19 16:38:38 90

原创 linux——Gdb调试流程

(gdb) b 行号。

2023-08-17 20:34:33 48 1

原创 QT图片浏览器(可自动播放、调整速度)

这个相册的不足之处是图片浏览至底部后,弹出消息对话框,不管点击yes或者no,主窗口和QMessageBox窗口会一起关掉,我尝试了用ret去接收no的返回值,但是在if里面用了几种方法都不行。欢迎评论交流,望大佬指点~int ret = QMessageBox::warning(this,tr("丛林溪流提示"),tr("相册浏览至底部\n""你确定要退出吗?//这里写点什么呢?else。

2023-08-17 19:51:52 195 1

原创 QT文本编辑器———第四弹(字体、字体颜色、加粗、倾斜、下划线、背景色)

在原版本基础上做了优化,增加了背景色的选项,工具栏添加了字体、字号、背景色。整体还是比较简单的,要注意的是QTextCursor这个类,用于获取光标所在行的文本。关注博主,继续更新哟~

2023-08-17 10:22:39 1622 5

原创 QT文本编辑器———第三弹(剪切、复制、粘贴、撤回、回撤、清除)

可以看出剪切、复制、粘贴、撤回、回撤、清除,这些子菜单的实现比文件菜单的实现容易的多。qt文件编辑器——编辑菜单。

2023-08-15 18:53:17 434

原创 QT文本编辑器———第二弹(新建、打开、保存、另存为、退出)

五个子菜单的功能没有想象中的复杂,主要是逻辑以及分析每个子菜单的判断条件,其中”打开“这个子菜单功能分析要稍微复杂一些,但仔细发现其实就是步骤多了一点,判断星号这段代码,几个子菜单都可以共用。注意要点做了详细阐述,代码中也写了注释,这也是博主在写代码时遇到的一些问题。后续内容还会陆续更新哟~

2023-08-14 15:40:26 1003 1

原创 qt学习笔记——文件相关操作(read write)

1.在qt里用代码在工程目录下创建一个test.txt2.用ui创建一个行编辑器和两个按钮3.在lineEdit里写文本后,点击write,将文本写入test.txt;点击read,将test.txt中的内容读到lineEdit。

2023-08-13 14:15:43 177 1

原创 QT文本编辑器———第一弹

菜单栏直接输入名字之后回车即可,创建菜单项时,我们可以添加热键(注意:直接写(N)不行,要添加&再回车),这时我们可以看见在界面下方就会出现action_N,我们可以修改子菜单的名字,设置快捷键以及右键添加资源,设置子菜单的图标,有没有宝子还不会添加资源文件的,欢迎评论留言call 博主哟~,最后将子菜单拖动到工具栏即可,我们也可以右键添加分隔符,将一类的工具做划分。宝子们耐心添加,效果图如下。而QWidget是没有的。

2023-08-10 20:38:30 216 1

原创 qt实现图片查看器(有登录界面)

这是博主发布的第一篇博客,用以记录自己学习的收获以及交流分享,博主还在菜鸟程序员的道路上摸爬滚打,水平有限,有错误之处,希望多多指正哟~此项目可改进部分:注册功能还没有写,账号密码是预先写入了源代码,可以通过注册按钮把账号密码用数据库储存起来,在登录时和数据库中的数据对比。功能界面的行编辑框有点小,显示不全路径。功能界面是敲的代码,登录界面是采用ui设计师,我是希望通过两种方式对比,让大家更好理解。

2023-08-05 15:05:49 289 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除