自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记录.关于flash的擦除后的值

所以这也可以推出:flash无法写入1,只能写入0。要想写入1只能先对flash擦除再写。所以对字寻址的flash都需要一次擦除4个字节然后再写入值,有两个步骤,而不是直接就写入了。flash在被擦除后,读回的值是1,而不是0。也就是说一个字被擦除后其值是0xFF而不是0x00,这个跟flash的原理有关。那么知道这个知识对我们有什么帮助:当我们需要操作flash时就能知道需要先擦除再写入。

2024-05-18 22:42:31 68

原创 air001研究笔记.基于arduino快速开发简单项目

air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。AIR001芯片数据手册1.0.4.pdfarm Comtex-m0内核架构,内置集成32kB的字节寻址flash以及4kB ram,工作最高主频48Mhz,内置rc振荡器也支持外部晶振时钟。

2024-01-19 01:33:16 2401 2

原创 FPFA.一种二倍频电路代码描述以及测量详情

1、因为需要倍频电路所以找了个二倍频的电路,通过fpga实际测量发现经过倍频后的电路峰值降低。不过这个也正常,因为该电路只要过触发点就会开始发生波形变化,而电路的触发值不是峰值。2、继续对电路做倍频后信号做二倍频,发现已经无法继续倍频,因为峰值电压的降低后触发d触发器的电压已经距离峰值非常接近了,没有足够的高电平保持时间,而倍频后的时钟边沿斜率又大致跟原时钟一样。(如图黄、蓝信号为一次跟二次倍频结果,紫色为原时钟)3、所以使用触发器的倍频方法:二倍频后就到头了。暂时还没找到优化电路的方法。

2023-12-23 00:07:26 862 1

原创 fpga.一份带缓冲的uart模块代码分享

这个代码是整个库文件包工程的一部分,希望能在两年的时间写出完整的包,但是时间也不多,只能晚上空闲时断断续续写的,毕竟不能耽误打游戏不是- 该工程的地址分享在gitee,建议直接看gitee的,vlog的代码不会更新。- 这个uart模块支持rx、tx波特率分开,在应对io数量抓级时有可以rx、tx分别接只需要rx或tx的ic\模块- 支持1200到最高1152000,其实更高也是可以的,设计时理论到11.52Mhz,不过只测到示波器3M,因为上位机软件都已经不支持了。

2023-12-21 00:46:50 351

原创 记录.在linux系统deepin上实现国产fpga高云小蜜蜂系列的烧录与开发

因为平时的时候并不喜欢一直开着装载windows的高性能电脑,基本只有linux无法开发某个设备或者打游戏时才会想要启动。这次希望能够在我的一台畅网微的nas上能够开发高云的fpga,该cpu为n5100,平时看看网页,敲敲代码够用了。该设备刷了国产linux发行版deepin桌面系统,平时用的很顺畅,这次把在windows上敲fpga的需求转移到这个设备上。

2023-11-21 00:42:47 341

原创 fpga.野火征途开发板实现74HC595串并转换控制数码管

这个小项目我是想试一试,如果不跟着野火的步骤:分析->波形图->编辑->仿真->debug,不用波形图纯脑补会用多久的时间,我会遇到什么问题?这个项目是控制数码管显示的,当然我没有看野火的数码管的视频。写不写波形图的区别首先是时间上:比用波形图至少慢了4倍,这个时间主要花在了debug上,是真的痛苦。然后是代码上,不用波形图时很多波形的时序都有点想当然了,实际运行的波形跟真正要的波形不是同一个时会先天陷入教条认为自己实际输出的就是对的,要花大量时间比对,更痛苦了。总结:老实点先写波形图。

2023-11-12 14:28:20 288

原创 记录.freeRtos系统在中断中恢复挂起的线程总是不是实时的恢复而是延后了一段时间

在编程时发现,一个线程的响应总是落后于某个外部信号。这个外部信号使用中断捕抓,然后恢复一个运行一次会挂起自身的线程。但是在测试中发现,该线程的响应总是落后于该外部信号从0ms-10ms的一个范围。

2023-09-27 17:50:56 105

原创 示波器探头的衰减档.x1或x10用在哪些场景?

x1档电阻阻值小于x10档(200Ω跟10mΩ,但是示波器内部自带1mΩ来串联,所以可以看作x1档输入阻值是x10的1/10)- x1档电容容值大于x10档(大概是0.1nf 跟0.018nf 的区别,看示波器用啥探头)- 对于要求测量一些瞬时功率大平均功率小的波形,例如某些突变的尖刺信号应该用x1档。- 对于要求测量的小信号更接近真实波形应该用x10档,例如晶振的波形。三、上面这两个阻容值的区别区分了两个挡位的应用。二、x1、x10档位的阻容。

2023-09-26 14:34:55 568

原创 记录.原码、反码、补码是如何简化处理四则运算以及计算机的数值存储

1、原码:最高位是符号位,正数符号位为0,负数符号位为1。其余是数值。符号位加数值组成原码。2、反码:正数补码是原码,负数补码是除了符号位外其他位取反。3、补码:正数补码是原码,负数补码是其反码加1。

2023-08-03 17:47:20 76 2

原创 如何理解数组与指针变量在c/c++中的不同

c/c++中指针与数组名在很多时候经常看作是一个东西。比如一个命名是指针变量却像数组一样用中括号取值,数组名也当成一个常量指针变量来用。那么这两个在代码编写里核心的区别是什么?使用起来有什么不一样?

2023-07-26 17:02:41 66

原创 fpga.蜂鸣器

1、现在想想,只是实现蜂鸣器还能更简单的,只要对时钟进行分频就好了,然后计数器计算。完全不需要一个除法器。2、这是我用基于野火的开发板写的。高云的fpga只要自己改一下时钟跟做一下引脚约束就好了。

2023-06-04 13:33:05 367

原创 记录.keil进debug如果不先reset就会导致SVC 0会跳转会main起始

gd32f303使用keil开发,进debug。如果不先reset,就会导致程序跑飞或者在freeRTOS的“SVC 0”这条语句后无法跳转到SVC中断,而是直接跳转到main函数开头了。在进debug之前reset一下。

2023-04-26 10:13:37 193

原创 记录.晶振测量为什么要用x10探头

探头有输入电容,x10探头有更大的输入阻抗、更小的输入电容。对晶振波形的影响最小。测得的波形更能反应实际运行的情况。在一次测量晶振中发现x1探头跟x10探头测量的晶振波形有区别。

2023-04-25 09:23:16 281

原创 GD32f303.从一次HardFault_Handler了解排查问题的方法

在给工程调价usbd时突然出现了HardFault_Handler。

2023-04-14 12:04:42 1761 2

原创 总结GNU c内置的宏函数

1、知道当前的函数函数名有很多好处,在调试里经常要定位错误发生的地方,在错误发生打印错误码到控制台的时候,就可以插入该函数名以精确定位发生的位置。而关于修饰符的用法,网上有很多。一、我个人常用的内置宏。

2023-03-01 11:19:47 117

原创 记录.关于rtos的总中断开关

解决:发现是总中断开关是在调用系统之后才开启的。以前用stm做裸机开发的时候一直都是在main函数开头人工调用总开关,习惯成自然了,还以为出大问题了。问题:在上系统的时候,在系统初始化之前加了个死循环做测试,突然发现所有的中断不能用了,看门狗一直复位。

2023-02-17 15:00:02 77

原创 炒鸡蛋的制作.简简单单炒鸡蛋,吃了都说好

喵喵喵???

2023-02-09 21:45:10 122 1

原创 记录.freeRTOS在gd32f303RE的固件中启动线程进入svc 0后进入HardFault_Handler

上一个项目也用过gd32f303re本不应该会出现用浮点HardFault_Handler才对,后来仔细检查发现,由于直接是从demo建立的工程,而没有使用老项目的工程,一些设置会不一样。经仔细对比之后,发现开启了fpu,上一个项目依旧遇到过开启fpu导致硬件错误的情况。尝试关闭fpu,问题解决。- 将代码移植完毕后,试着运行一下程序,发现直接在运行svc 0这条语句后直接进入HardFault_Handler。三、为什么一开fpu就进HardFault_Handler,但是裸机运行浮点没有一点问题?

2023-02-03 16:44:53 1267

原创 记录.不定长宏函数的书写

_VA_ARGS__关键宏效果是C语言内部展开成一连串的参数名,也就是给不定长的参数设置参数名使得能够直接以文本替代的方法参与到后续编译。根据需求又衍生出另一个思考:不定长宏函数怎么书写?这个字符串是会被编译器识别成什么样子的?中间的空格会不会保留?意思是当不定长参数为空时提醒编译器缺省否则调用函数不写不定长参数时会报错。可以看到空格被直接忽视了。

2023-01-30 11:33:43 120

原创 是“enum typename{...};”还是“typedef enum{...}typename;”

“enum typename{...};”还是“typedef enum{...}typename;”

2023-01-29 17:51:13 258

原创 高云fpga.Tang Nano 4k(GW1NSR-4C)呼吸灯

在官网下载即可,有免费个人使用的社区版。- 程序下载:装好驱动直接点这个就可以下载。- 测试文件(文件testbeach.v)- 引脚约束文件(文件kb1.cst)- 顶层模块(文件main.v)五、看到开发板开始呼吸就是完成了功能。四、代码下载(需要先进行代码的编译)二、代码(如下三个文件)三、modulesim。

2022-12-20 14:50:58 832 1

原创 MCU.volatile标识符实质

【代码】MCU.学习感悟。

2022-12-12 12:02:09 98

原创 fpga.一些学习感悟以及细节方面

在fpga我只是一个新手,我会将一些学习心得不定期放到这个博文里。这里占个坑。

2022-12-12 00:25:18 432 1

原创 记录.中断如何影响造成代码的运行异常

看似无懈可击的代码,在不确定的输入时有完全难以预测的结果,通常这种问题发生在当前正在执行中或随后被唤醒的代码段与中断有耦合时,代码的运行就变得无法掌握。这种情况可以通过对资源进行加锁来改善,但是这只对第二个例子:“需要根据中断结果来响应输出时”有用,串口执行被中断打断是无法恢复的。输入源为io的高低电平,基于该高低电平,当变化则进入中断,随后唤醒rtos的任务去执行,控制输出。输入源不稳定,在快速的时间多次发生io的变化,rtos的任务还没执行完毕就被打断,随后恢复的代码运行却根据新改变的输入去执行。

2022-10-28 15:33:07 491

原创 实现一个类OSAL系统

一天心血来潮,看到freeRtos\usos\rt-thread这些优秀系统,自己也想造个轮子。但是这些rtos实现困难无比,尤其这对于我这个知识储备可怜至极的人。真rtos太难,现在把目光聚焦到ble、zigbee协议中的osal系统,基于轮询的一个系统,可以说完美符合我的心态。不要求低开销,不要求多功能,不要求能用,甚至不要求能用(其实是懒得debug,如果有人觉得有用,我会继续写下去),希望各位在看我代码的时候手下留情不要骂太狠。

2022-10-23 03:34:13 309

原创 ADC的计算策略.针对ADC值经常跳变的电路获取正确结果

adc值就在格子的临界处:跳变的adc值随时在两个格子a、b的无效触发区间跳动,若只是简单的设置为:触发在格子a的临界处就直接认为格子a有效,触发在格子b的临界处就直接认为格子a有效,这会导致每一次计算结果时哪怕不扭动旋钮等器件控制adc值改变,单单adc值的跳变以及不稳定就概率让计算的结果为:落在格子a、落在格子b,但这是显然没有扭动器件。adc值落在无效段:直接记录当前adc值,与之前记录的adc值做平均得出结果,平均的结果不讨论如果继续落入临界区的情况,直接得结果。adc值不在格子的临界处。

2022-10-21 00:37:19 1383

原创 关于keil的进阶操作.烧录、flash回读、sct文件

keil进阶。

2022-09-18 00:33:21 2066

原创 单片机的iap升级.思路流程与杂乱知识

【代码】iap升级。

2022-09-18 00:23:55 2106

原创 记录gd32f303 IAP代码跳转卡时钟初始化问题

发现是因为boot代码跟我app代码的时钟配置不一样的问题,一个内部时钟104MHz一个外部时钟72MHz。简单地把app的时钟配置搬到boot程序就实现跳转且运行正常。在代码升级跳转中发现跳转正确,但是会卡在代码开头的初始化时钟树的操作中。......

2022-08-15 09:17:58 1131

原创 rt-thread & pico开发.环境搭建

-编辑器:vscode--工程创建工具:env--编译器:gcc for arm工具。

2022-08-03 14:36:44 2477 2

原创 GD32f303的硬件IIC.从机配置与接收流程

1、要注意硬件IIC配置相当坑,看起来没关系的两个函数,只要初始化配置化调用写反了就可能导致问题。比如:最终使能IIC的函数< i2c_enable(I2Cx) >与配置应答的函数< i2c_ack_config(I2Cx, I2C_ACK_ENABLE) >写反了就会导致配置失败。非常离谱。 2、在写自己的中断函数时要注意好逻辑,从机发与从机收是两个套路。而且< i2c_interrupt_flag_clear() >函数不是万能的。要注意这个函数只能清除哪些标志位。二、我的硬件IIc.从机

2022-07-11 17:22:58 7383 15

原创 关于uart串口接收端乱码问题

在给gd32f303单片机封装串口驱动时,发现接收端乱码。经排查发现是系统时钟不准。经过调整内部时钟后成功解决问题。注:异步通信协议uart依赖双方时钟的准确,任一方时钟不准都会导致乱码问题。.........

2022-06-24 09:54:09 3974 2

原创 关于rt-thread中的bsp:pico的延时函数延时时间不对问题

刚入手了pico,刚学习了rt-thread,发现rt-thread的bsp带pico,一份意想不到的狂喜。高高兴兴run一个闪烁灯。结果延时时间快了整整一倍。wdnmd。经排查,发现是board.c文件中的 void rt_hw_board_init();初始化错误。原来的函数是:这里有错误,树莓派官方的frequency_count_khz() 是用系统 时钟的,也就是自己设置的频率:#define PLL_SYS_KHZ (133 * 1000)。所以应该改成:可以看到,延时时间正确了。...

2022-06-15 21:35:21 357

原创 BLE学习.osal学习1.osal的任务与事件

一:osal api总结:1、在osal中注册自己服务的办法:-定义好两个函数:void xxxtask_Init( uint8 taskId );uint16 xxxtask_processEvent( uint8 task_id, uint16 events );-将这两个函数放到同在app文件夹下的一个特殊文件中:初始化函数放在osalInitTasks()函数中, 任务处理函数放在xxxtask_processEvent放在taskArr[]数组中。值得注意的是:在将初始化函数以及任务处理函数放入上

2022-06-10 20:04:19 1210 3

原创 记录UM8005 8位单片机的程序死机:aS

问题描述:代码在UM8005运行一段时间发生 aS 错误。由于没有不知道aS是什么意思,只能靠估计了。初步判断:内存数据被异常写入。实验:当把一个数组注释,死机消失。判断:栈溢出

2022-06-09 16:21:17 255

原创 记录keil的一次程序死机异常

问题:将代码中将一行代码注释后 文件编译,程序在运行时死机。将该行代码加回来,程序运行正常。解决:点击rebuild,将工程所有文件重新编译。疑似在链接时发生错误。

2022-04-25 16:50:49 299

原创 求散点包围的闭合平面的面积

一、问题描述求从点A1 到 点Ai 所包围的平面面积 <从A1到Ai 为闭合平面的一笔画顺序所得点>二、原理假设有任意的从 点A 到 点J 的闭合平面,如图:图1对该闭合图形以步长step切割成 面积为 step*step 的正方形。数该平面的格子即可得到近似的面积,精确度随step而改变,如图:图2三、程序实现原理在图2中,我们可以看到闭合图形最低点为:点H,最高点为:点C, 最左点为:点B,最右点是:点F,由此可知:该闭合图形长为9*step,宽为 8*step.

2021-04-30 14:21:41 1298

空空如也

空空如也

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

TA关注的人

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