自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_52849254的博客

嗨嗨嗨!!!

  • 博客(175)
  • 收藏
  • 关注

原创 RK3566(泰山派):boa服务器移植

使用此参数,则会在DocumentRoot设定的目录添加一个ip地址作为新的DocumentRoot来 处理客户端的请求。如DocumentRoot设置为/var/www,则http://localhost/ 则转换成/var/www/127.0.0.1/,若注释此参数,则为/var/www/。DirectoryIndex:指定预生成目录信息的文件,注释此变量将使用DirectoryMaker变量。MimeTypes:设置包含mimetypes信息的文件,一般是/etc/mime.types。

2024-05-16 22:51:12 716

原创 RK3566(泰山派):FRP内网穿透实现

泰山派的ip地址为192.168.113.40,boa服务器的端口号为80,具体见boa服务器的boa.conf文件,如图。我在嘉立创泰山派上面运行了个boa服务器,但是boa服务器只能内网访问,使用非常不方便,所以给boa服务器搞个内网穿透。输入需要内网穿透的ip地址和端口,远程端口1000-65535中随便输入,可以保存用就行。frp nps服务器在淘宝上面买的,8块大洋一个月,购买链接。用WinSCP登录访问泰山派开发板,新建frpnc文件夹,买了后,用这个实现内网穿透,服务器使用官方地址。

2024-05-16 22:45:24 327

原创 RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏)

从原理图中可知GP7101和触摸共同挂在道I2C下,所以引用&i2c1并添加一个我们自己定义的myts@38触摸节点。一般触摸都放在/kernel/drivers/input/touchscreen目录下,所以我们在此路径下创建一个my_touch目录用来存放Makefile和my_touch.c文件。touchscreen/Makefile中把my_touch.c编译到内核中,当然也可以选择obj-m编译成模块。要想my_touch下的Makefile生效还需要在上一层目录的Makef

2024-05-14 22:27:52 1013 1

原创 RK3566(泰山派):GP7101背光驱动

调试屏幕我们一般会先把背光点亮如果使用的是泰山派的背光电路那直接使用代码里面默认的背光PWM驱动就行,但为了保护屏幕背光我们选择的是扩展板上的板载背光电路给3.1寸屏幕背光供电,扩展板板载背光电路PWM脚是通过GP7101 i2C转PWM芯片实现。因为我们之前的背光驱动也是用的"backlight"节点,为了不去修改上层我们自己写的驱动也是用的"backlight"节点所以两个节点会冲突,所以我们在tspi-rk3566-dsi-v10.dtsi中把之前的屏蔽掉留下我们自己写的驱动。触摸驱动I2C写函数。

2024-05-14 22:12:12 846

原创 基于梁山派的口袋示波器

梁山派示波器,由屏幕,按键,拨轮按键,模拟信号采集输出电路组成。一路模拟信号采集,一路波形发生输出,全金属BNC接头连接质感满满。独立三个静音按键,两个拨轮按键搭配。

2024-03-24 21:52:38 1089

原创 基于GD32E230C8T6的数字示波器

SPI是一个环形总线结构,由四根线组成,SSPSR是SPI设备内部的移位寄存器,根据SPI时钟信号状态,往SSPBUF中移入或移出数据,注意这个环形的说法,这里当MOSI向从机发送一位数据后,从机的MOSO也会移位数据给主机,只不过主机可以根据需要是否将其放置接收缓冲区中,比如,如果是主机发送0×80,从机可能会移位过来一位无意义的数据,这时主机不会管这些数据,会选择丢弃。ADC采样的频率越高,得到的数字信号就越接近原来的模拟信号,也就是保真度越高,但是需要更多的资源和计算功耗。此时构成正相比例放大电路。

2024-03-23 15:12:28 1089

原创 基于systick实现获取系统运行时间

该代码段是一个典型的systick模块,实现了系统时钟初始化、定时中断服务以及获取系统运行时间功能。代码结构清晰、模块化设计、层次分明、接口简洁,易于理解和维护。rcu_clock_freq_get(CK_AHB): 获取AHB时钟频率SysTick_Config(): 配置SysTick定时器while (1);: 死循环g_sysRunTime++: 将系统运行时间加1return g_sysRunTime: 返回系统运行时间。

2024-02-29 21:51:07 448 1

原创 软件分层模块化设计,---抽象与硬件分离

这段代码展示了LED驱动模块的设计,体现了软件分层模块化设计的几个方面:结构体封装:使用结构体 Led_GPIO_t 封装了LED的相关信息,包括使用的 RCC 外设、GPIO 端口和引脚号,使得 LED 相关的信息更具可读性和可维护性。模块化函数设计:将 LED 相关的功能函数(初始化、点亮、熄灭)封装成了独立的函数,分别是 LedDrvInit()、TurnOnLed() 和 TurnOffLed(),这样设计使得 LED 功能模块化,易于扩展和维护。

2024-02-29 21:48:13 975

原创 DWT硬件延时

- DWT里有一个32位的寄存器叫CYCCNT,它是一个向上计数器,记录的是内核时钟运行的次数,内核时钟跳动一次,该计数器就加1,如果内核时钟是120MHz,那精度就是1/120M = 8.3ns,而单片机程序的运行时间通常都是微秒级别的,所以DWT实现延时的精度是非常高的。- 要实现DWT延时的功能,总共涉及到三个内核寄存器: DEMCR、 DWT_CTRL、 DWT_CYCCNT,分别用于开启DWT功能、开启CYCCNT及获得系统时钟计数值;当CYCCNT溢出之后,会清O重新开始向上计数。- 如果内

2024-02-26 14:06:52 406

原创 GPIO通用输入输出管脚

GPIO,General Purpose lnput Outpu,指的是芯片的通用输入输出管脚。

2024-02-26 13:12:16 943

原创 瑞芯微RK3568:烧录系统

编译Linux_SDK后得到多个镜像文件。

2023-09-17 18:10:34 1581 1

原创 RAM不够?使用CCMRAM

这段代码是针对 ARM Cortex-M 系列处理器的链接脚本代码,用于描述内存布局中的 .ccmram(Core Coupled Memory RAM)段。综合来看,这段代码的作用是定义了一个名为 .ccmram 的段,该段将位于指定的 CCMRAM 内存区域中。:这一行代码创建另一个全局符号 _eccmram,它将指向此时的地址,即 .ccmram 段的结束地址。:这一行代码创建一个全局符号 _sccmram,它将指向此时的地址,即 .ccmram 段的起始地址。*(.ccmram) 和。

2023-08-12 14:56:00 1229

原创 pinctrl_desc结构体注册

首先,pinctrl_register_one_pin 函数用于注册单个引脚,它分配内存并初始化引脚描述符,然后将其插入到引脚描述符树中。其次,pinctrl_register_pins 函数用于注册一组引脚,它遍历引脚描述符数组并调用 pinctrl_register_one_pin 函数来逐个注册引脚。接着,函数会注册所有的引脚,调用 pinctrl_register_pins 函数进行引脚的注册。如果注册过程中发生错误,则会打印错误信息,释放已注册的引脚描述符,并跳转到错误处理标签 out_err。

2023-08-07 12:59:35 500

原创 pinctrl设备树节点映射详细分析imx_dt_node_to_map

这是一个名为 imx_dt_node_to_map 的函数,用于将设备树中的节点映射为引脚控制器的配置映射。以下是该函数的详细分析:首先,函数从引脚控制器设备结构体 pctldev 中获取指向 imx_pinctrl 结构体的指针 ipctl,以及指向 imx_pinctrl_soc_info 结构体的指针 info。函数查找节点 np 所属的引脚组,通过调用 imx_pinctrl_find_group_by_name 函数来查找。如果找不到组,则会打印错误信息并返回错误码 -EINVAL。

2023-08-07 12:57:49 748

原创 pinctrl_desc函数操作集实现

它通过传入的引脚 ID,在 imx_pinctrl_soc_info 结构体中查找对应的寄存器配置信息,并将传入的配置值写入配置寄存器。对于每个具有配置的引脚,将配置映射的类型设置为 PIN_MAP_TYPE_CONFIGS_PIN,引脚名设置为引脚的名称,配置数组设置为引脚的配置,配置数量设置为 1。首先,函数从引脚控制器设备结构体 pctldev 中获取指向 imx_pinctrl 结构体的指针 ipctl,以及指向 imx_pinctrl_soc_info 结构体的指针 info。

2023-08-07 12:44:21 351

原创 pinctrl_desc函数操作集

这些函数指针定义了与引脚配置相关的操作,并提供了对引脚配置的获取、设置和调试显示功能的支持。gpio_set_direction: 由于控制器可能需要根据GPIO配置为输入或输出来进行不同的配置,因此可以实现方向选择器函数作为需要引脚复用的GPIO控制器的支持。初始化 imx_pinctrl_desc时得知函数操作集为imx_pctrl_ops,imx_pmx_ops,imx_pinconf_ops。pin_config_config_dbg_show: 调试时显示驱动程序的引脚配置参数。

2023-08-07 12:37:50 289

原创 pinctrl_desc结构体实现

使用 devm_kmalloc 函数分配内存,大小为 sizeof(*info->pin_regs) * info->npins,并将返回的内存指针赋值给 info->pin_regs。

2023-07-24 17:50:48 263

原创 pinctrl设备及其结构体

pinctrl_info 是一个指向 struct imx_pinctrl_soc_info 的指针,用于存储与设备匹配时需要使用的数据。这行代码使用 of_match_device 函数在设备树匹配数组 imx6ul_pinctrl_of_match 中查找与当前设备匹配的项。这行代码将匹配项中的 data 字段赋值给 pinctrl_info,并进行类型转换,使其指向 struct imx_pinctrl_soc_info 类型的数据。:指向引脚描述符数组的指针,描述了由该引脚控制器处理的所有引脚。

2023-07-24 17:46:13 187

原创 pinctrl 配置信息详解

这就是宏 MX6UL_PAD_UART1_RTS_B GPIO1_IO19 的含义,看的比较仔细的同学应该会发现并没有 conf_reg 寄存器的值,config_reg 寄存器是设置一个 PIN 的电气特性的,这么重要的寄存器怎么没有值呢?, 在 这 里 就 相 当 于 设 置IOMUXC_SW_MUX_CTL_PAD_UART1_RTS_B 寄存器为 0x5,也即是设置 UART1_RTS_B 这个 PIN 复用为GPIO1_IO19。

2023-07-24 17:42:27 370

原创 DSP开发:串口sci中断接收数据实现

这一行代码设置 SCI 控制寄存器 (SciaRegs.SCICCR),包括停止位的设置为1位(1 stop bit)、不启用环回测试(No loopback)、不使用奇偶校验(No parity)、数据位设置为8位(8 char bits)、异步模式(async mode)和空闲线协议(idle-line protocol)。这两行代码将之前计算得到的高位波特率寄存器值(scihbaud)和低位波特率寄存器值(scilbaud)写入 SCI 的波特率寄存器,从而配置 SCI 的通信波特率。

2023-07-20 19:14:00 1541

原创 DSP开发:串口sci的发送与接收实现

LSPCLK(低速外设时钟)的频率为 37.5MHz,SCI的分频因子为 8(由于设置了 SCIHBAUD 和 SCILBAUD 分别为高8位和低8位),所以分频后的SCI时钟频率为 37.5MHz / 8 = 4.6875MHz。这段代码实现了串口SCI(串行通信接口)的初始化以及向串口发送数据的功能,并且通过函数重定向,将标准库的输出函数重定向到串口SCI上,实现了通过类似于标准库的 printf 函数的格式化字符串向串口SCI发送数据的功能。:用于存储接收到的字符串的字符数组,初始值全部为0。

2023-07-20 19:06:25 2776

原创 DSP开发:串口SCI重定位或重定义printf函数实现

0);/** @brief 串口打印重定向*/return _c;return _c;for(i=0;i

2023-07-20 18:57:49 722

原创 DSP(css)开发代码掉电保存下载到flash

这行代码使用了MemCopy函数,将数据从Flash存储器的RamfuncsLoadStart地址复制到RamfuncsRunStart地址,复制的长度由RamfuncsLoadEnd和RamfuncsLoadStart之间的差值确定。这样做的目的是将时间敏感的代码和FLASH配置代码加载到RAM中运行,以提高执行速度和响应时间。总体来说,这段代码的目的是将时间敏感的代码和FLASH配置代码从Flash存储器复制到RAM中,并在RAM中运行,以提高执行效率和响应时间。main函数添加下列内容(一般添加在。

2023-07-13 18:10:07 545

原创 DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)

DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)

2023-07-13 18:04:50 779 3

原创 重定义/自定义printf到串口输出实现的三种方法(cubeide)

ifdef __GNUC__ //串口重定向#else#endifreturn ch;这段代码是重定义了printf函数的输出方法,使用串口进行输出。它通过重定义PUTCHAR_PROTOTYPE宏来定义了一个名为__io_putchar(对于GCC编译器)或fputc(对于其他编译器)的函数。首先,根据编译器类型,PUTCHAR_PROTOTYPE宏会被定义为__io_putchar或fputc。GCC编译器使用__io_putchar,而其他编译器使用fputc。

2023-07-13 17:37:38 2374

原创 SGM58031与单片机驱动实现

最后,再次使用 HAL_I2C_GetState 函数等待 I2C 状态变为 HAL_I2C_STATE_READY,确保传输结束。然后,使用 HAL_I2C_GetState 函数等待 I2C 状态变为 HAL_I2C_STATE_READY,表示传输完成。然后,使用 HAL_I2C_GetState 函数等待 I2C 状态变为 HAL_I2C_STATE_READY,表示传输完成。紧接着,通过调用 smg58031_i2c_readregister 函数读取 chip_id 的值,并将其转换为 id。

2023-07-09 18:49:30 1542 1

原创 16位ADC芯片SGM58031驱动重点

第一个字节,0b1001000(第一个7位是I2C地址),第8位是读/写位,现在是低写2。第三个字节,0b10000100(要写入的配置寄存器的MSB,Bit[8]=0表示连续模式)4。第四字节,0b10000011(要写入的配置寄存器的LSB,Bit[7:5]='100’表示数据速率100Hz)第一个字节,0b1001000(第一个7位是I2C地址),第8位是读/写位,现在是低写2。第三个字节,0b10010001(第一个7位是I2C地址),第8位是读/写位,现在是高读4。数据速率等于配置的数据速率。

2023-07-09 18:36:25 2359 2

原创 CSS安装出错:Unicode Character Check -> Your temp directory path contains Unicode characters........

安装css,的时候出现上面内容,并导致无法安装css,上面内容报错原因是:Unicode字符检查->您的临时目录路径包含Unicode字符,这些字符可能破坏套接字。我的出错原因:电脑买的比较早,那时候不懂电脑,用户名只用了中文,后来懂电脑了,只修改了登录账号的用户名,其他原来相关的目录名,并没有修改为非中文,想重装系统,但资料比较多,还没全部整理完。查看用户目录,用户名为中文,而temp目录在用户目录的子目录下,也会有中文。上面查看,我的目录下有中文,导致出现开头错误,下面为解决办法。

2023-07-08 22:24:50 2256

原创 libjpeg库使用实例细节分析

这段代码是一个使用libjpeg库进行JPEG文件解析的模块。以下是代码的主要功能和结构:MyErrorMgr结构体定义了自定义的错误管理器,用于处理libjpeg库的错误。isJPGFormat函数用于判断给定的文件是否为JPEG格式。它使用libjpeg库的函数来读取文件头并检查是否为有效的JPEG文件。CovertOneLine函数用于将从JPEG文件中提取的一行像素数据转换为可以在显示设备上使用的格式。根据输入和输出的像素位数,它将像素数据转换为24位、16位或32位的格式。

2023-06-27 16:08:42 790

原创 标准输入stdin与屏幕输入tslib实例细节分析

其他线程通过调用GetInputEvent函数获取输入数据,线程会在没有输入数据时进入休眠状态,直到输入模块的子线程读取到数据并唤醒它们。总结来说,该函数的作用是从标准输入中读取一个字符,并将输入事件的类型设置为标准输入,时间戳设置为当前时间。此外,还定义了一个名为 g_tTouchScreenOpr 的触摸屏输入模块结构体,并初始化了其中的成员,包括模块名称、设备初始化函数和获取输入数据函数等。GetInputEvent函数用于获取输入数据,它会使当前线程休眠,等待输入模块的子线程读取到数据后唤醒它。

2023-06-23 11:31:06 317

原创 FreeType使用实例细节分析

然后,函数计算 GBK 编码值的区位码。该函数的作用是利用 FreeType 库加载指定字符的字形图像,并提取其中的位图信息,包括位置、尺寸、像素位数、行间距和数据缓冲区。这段代码实现了字体管理器的功能,包括注册字体模块、显示支持的字体模块、获取指定字体模块、设置字符尺寸、获取字符尺寸、获取字符位图、设置字体模块信息和初始化字体模块等操作。然后定义了一些静态变量,包括文件描述符 g_iFdHZK,指向字库文件的内存映射指针 g_pucHZKMem,以及指向字库文件结尾的指针 g_pucHZKMemEnd。

2023-06-23 11:10:42 601

原创 socket编程应用案例详细分析

pthread_mutex_lock 和 pthread_mutex_unlock 函数用于获取和释放互斥锁,确保在访问共享资源之前和之后的临界区域被正确保护。g_tNetDbgSendConVar 是一个静态变量,被声明为 pthread_cond_t 类型,用于在发送线程和其他线程之间实现等待和唤醒的操作。g_tNetDbgSendMutex 是一个静态变量,被声明为 pthread_mutex_t 类型,用于在发送线程和其他线程之间实现互斥访问。线程首先进入休眠状态,等待被唤醒。

2023-06-20 21:33:02 614

原创 Linux下实现自己的printf函数

在函数内部,我们首先使用 va_start 宏初始化一个 va_list 对象,然后使用 vprintf 函数和该对象来输出格式化字符串和参数列表中的值。iNum = vsprintf(strTmpBuf, pcFormat, tArg):使用格式化字符串和可变参数列表将数据格式化到临时缓冲区strTmpBuf中,并返回格式化后的字符串长度。如果当前结构体的isCanUse标志为1,表示该结构体可用,则调用该结构体的DebugPrint函数打印调试信息,传入的参数为pcTmp。

2023-06-16 14:33:55 943

原创 两个HC-05蓝牙之间的配对

买了个垃圾蓝牙,不能软件控制AT模式,使用下面方法将就用。使用串口一定要知道三要素,一是波特率,二是串口号,三是数据格式,HC-05只支持一种数据格式: 数据位8 位,停止位1 位,无校验位,无流控制。进入 AT 命令方法:1,按住按键或EN脚拉高,此时灯是慢闪,HC-05进入AT命令模式,默认波特率一般是38400;此模式我们叫原始模式。原始模式下一直处于AT命令模式状态。2,HC-05上电开机,红灯快闪,按住按键或EN拉高,HC-05进入AT命令模式,默认波特率是9600;

2023-06-14 10:12:33 1659

原创 STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)

mpu6050_write_byte函数用于向MPU6050的指定寄存器写入单个字节的数据。mpu6050_get_accelerometer函数用于获取MPU6050的加速度值。mpu6050_read_byte函数用于读取MPU6050指定寄存器的单个字节数据。mpu6050_get_gyroscope函数用于获取MPU6050的陀螺仪值。mpu6050_set_gyro_fsr函数用于设置陀螺仪传感器的量程范围。mpu6050_hw_init函数用于初始化MPU6050相关的硬件引脚。

2023-06-12 15:31:57 1450

原创 STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)

然后,它通过串口调试助手打印这些数据。mpu6050_write_byte(uint8_t addr, uint8_t reg, uint8_t dat): 向MPU6050指定寄存器写入一字节数据的函数。mpu6050_read_byte(uint8_t addr, uint8_t reg, uint8_t *dat): 读取MPU6050指定寄存器的值的函数。MPU6050_WriteReg(uint8_t reg_add,uint8_t reg_dat): 将数据写入MPU6050寄存器的函数。

2023-06-12 15:22:57 3192 5

原创 tb6612电机驱动软件开发(代码pid实现,调试,控制实现)

函数Location_Speed_control是控制小车运动的主函数,它调用了location_left_pid_control和location_right_pid_control函数计算位置环的输出值,并将其作为目标速度传入speed_left_pid_control和speed_right_pid_control函数计算速度环的输出值。函数speed_left_pid_control和speed_right_pid_control是速度环的PID控制函数,根据实际速度和目标速度计算控制量。

2023-06-09 15:17:20 2172 2

原创 基础工程(cubeide串口调试,printf实现,延时函数)

* 串口1,调试串口 ------------------------------------------------------------*/ /* 接收缓冲, */ uint8_t g_usart_rx_buf [ USART_REC_LEN ] = {0 };0 };/* HAL库使用的串口接收缓冲 */

2023-06-09 12:30:27 864

原创 tb6612电机驱动软件开发(cubeide工程调试,引脚等设置)

系统时钟分频得到的总线时钟:AHB(Advanced High performance Bus,高级高性能总线,用于高性能模块CPU、DMA、DSP之间的连接)、APB1、APB2、APB3和APB总线时钟(Advanced Peripheral Bus,高性能外围总线,用于低带宽的周边外设之间的连接,例如UART)以及Systick时钟的最终来源都是系统时钟SYSCLK。③:PLL 分频系数 M 配置。用于连接电机的电机A电机输出端1,A电机输出端2,B电机输出端2,B电机输出端1来控制电机的正反转。

2023-06-07 21:34:25 1375

原创 tb6612电机驱动与JGB37-520减速直流电机

编码器是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。按照原理可分为(常见的)

2023-06-07 19:29:01 13677 5

20.11 使用SDO报文修改从机心跳周期-主机.rar

20.11 使用SDO报文修改从机心跳周期-主机

2024-03-02

20.13 使用PDO报文定时发送温湿度数据-从机.rar

20.13 使用PDO报文定时发送温湿度数据-从机

2024-03-02

20.10 主机切换从机状态.rar

20.10 主机切换从机状态

2024-03-02

20.9 主机监测从机是否在线-主机侧.rar

20.9 主机监测从机是否在线-主机侧

2024-03-02

20.11 使用SDO报文修改从机心跳周期-从机.rar

20.11 使用SDO报文修改从机心跳周期-从机

2024-03-02

20.4 通过CAN控制LED.rar

20.4 通过CAN控制LED

2024-03-02

20.7 开源canfestival库移植.rar

20.7 开源canfestival库移植

2024-03-02

19.16 实现温湿度采集显示UI界面.rar

19.16 实现温湿度采集显示UI界面

2024-03-02

19.20 实现设置日期时间完整功能.rar

19.20 实现设置日期时间完整功能

2024-03-02

20.2 CAN总线驱动代码实现.rar

20.2 CAN总线驱动代码实现

2024-03-02

19.3 LVGL使用外部SRAM.rar

19.3 LVGL使用外部SRAM

2024-03-02

19.10 实现LED控制的UI界面.rar

19.10 实现LED控制的UI界面

2024-03-02

19.1 移植LVGL.rar

19.1 移植LVGL

2024-03-02

18.4 LCD显示ASCII字符.rar

GD32F303各种使用场景代码实现

2024-03-02

18.5 LCD显示汉字.rar

GD32F303各种使用场景代码实现

2024-03-02

14 IAP-APP 产品参数掉电保存与校验.rar

GD32F303各种使用场景代码实现

2024-03-02

12.4 硬件SPI驱动NOR FLASH.rar

GD32F303各种使用场景代码实现

2024-03-02

12.5 基于Norflash保存产品参数.rar

GD32F303各种使用场景代码实现

2024-03-02

12.3 软件模拟SPI驱动NOR FLASH.rar

GD32F303各种使用场景代码实现

2024-03-02

11.7 产品参数掉电保存与校验.rar

GD32F303各种使用场景代码实现

2024-03-02

IAR Embedded Workbench 安装包

IAR Embedded Workbench 是一款由 IAR Systems 开发的集成开发环境(IDE),专门用于嵌入式应用程序的开发。它支持多种微控制器(MCU)和微处理器(MPU),并提供了一套完整的工具,包括编译器、调试器和仿真器等,以帮助开发者提高工作效率,优化代码性能,并确保产品质量。 IAR Embedded Workbench 提供了丰富的功能,包括: 代码编辑器:具有语法高亮、代码自动完成、代码折叠等功能,帮助开发者更高效地编写代码。 编译器:优化的编译器能够生成高效的目标代码,减少内存占用,提高程序运行速度。 调试器:强大的调试功能,包括断点设置、单步执行、变量监视和内存查看等,帮助开发者快速定位和解决代码中的问题。 性能分析工具:通过性能分析工具,开发者可以了解程序的运行效率,找出性能瓶颈并进行优化。 静态代码分析:帮助开发者在代码编写阶段就发现潜在的错误和不规范的编码实践。 集成的软件开发库(CMSIS):提供了一系列标准的硬件抽象层(HAL)和中间件组件,简化了软件的开发和移植。 IAR Embedded Workbench 支持的微控制器和微处理器种类

2024-04-02

基于梁山派的口袋示波器源码

# 基于梁山派的口袋示波器 ![image-20240323230346091](https://s2.loli.net/2024/03/24/VhjHyAQt4raDkZ8.png) # 实物演示 ![image-20240324142629481](https://s2.loli.net/2024/03/24/OMR2l4U6VG8d7cK.png) <iframe src="//player.bilibili.com/player.html?aid=1202238629&bvid=BV1tf421Z7xs&cid=1480735434&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe> ![image-20240324142637747](https://s2.loli.net/2024/03/24/D4tfpaqJUnl8kbF.png) ![image-20240324142645489](https:/

2024-03-24

基于GD32的简易数字示波器源代码

LED LED灯发光原理 LED灯内部是一个半导体晶片,一半是P 型半导体,另一半是N型半导体。这两种半导体连接起来时,就形成了P一N结,当电流通过导线作用于这个晶片时,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光的形式发出能量,这就是LED灯发光的原理。 LED灯驱动原理 驱动LED灯,也就是使LED灯点亮,首先查看原理图,查看LED灯引脚的连接关系,可通过对应单片机引脚输出高低电平,从而改变LED灯两侧电势差形成电流回路,点亮LED 核心板led原理图 示波器板led原理图 /* * 函数内容:初始化LED引脚 * 函数参数:无 * 返回值: 无 */ void Init_LED_GPIO(void) { //使能时钟 rcu_periph_clock_enable(RCU_GPIOC); //设置输出模式,不上下拉 gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_14); //设置输出模式,不上下拉 gpio_m

2024-03-12

简易数字示波器原理图与PCB设计

数字示波器是一种用于显示电信号波形的仪器,主要由模拟前端处理电路、单片机电路、电源电路、控制电路、触发电路、校准电路等电路组成。由于该项目为示波器入门项目,在电路设计上选择了一些核心电路,帮助初学者更好的了解示波器的原理和设计方法,主要包括以下电路: 模拟前端处理电路.负责将输入的检测模拟信号进行处理后给单片机进行识别,具体电路包括了交直流耦合选择电路、电压衰减电路、信号处理电路以及频率检测电路,是整个电路的核心。 电源电路,负责给运放提供正负电源以及系统供电,是保障电路正常运行的基础。 单片机电路.给系统提供控制核心,负责对输入信号的采集与处理输出工作。 人机交互电路:用于控制示波器功能,包括按腱、旋钮、LED灯、显示屏以及其它输入输出接口,为示波器功能的开发提供基础。 一个优秀的数字示波器设计及工作原理非常复杂,其中还包含了许多细节和技术内容,各个电路相互配合,使得数字示波器能够准确地获取、存储和显示输入信号的波形。 模拟前端处理电路 在整个示波器电路设计过程中,模拟前端处理电路是最为重要的,其中大量应用了模拟电路的知识,其中包括输入交直流耦合切换电路、输入信号衰减电路、以及信号调

2024-03-12

PCB封装库大全(AD)

PCB封装库是一种包含了各种PCB元件封装信息的数据库,可以帮助设计师在PCB设计过程中快速选择和应用合适的封装。这些封装信息包括元件的外形、引脚定义、尺寸、布局等。通过使用PCB封装库,设计师可以节省大量时间和精力,提高设计效率。

2024-03-02

AD原理图库大全(包含大量常见电子器件)

0.1 - 电阻-电容-电感.SchLib 0.2 - 二极管-整流桥.SchLib 0.3 - LED发光二极管.SchLib 0.4 - 三极管.SchLib 0.5 - 场效应管-可控硅.SchLib 0.6 - 数码管-TFT-OLED屏.SchLib 0.7 - 常用按键-开关.SchLib 0.8 - 以太网-音频-USB插座.SchLib 0.9 - 电路模块.SchLib 1.0 - 常见芯片.SchLib 1.1 - 电源类芯片.SchLib 1.2 - 传感元件.SchLib 1.3 - CD4000系列芯片.SCHLIB 1.4 - 74系列TTL芯片.SchLib 1.5 - 继电器.SchLib 1.6 - ADI系列精密运放.SchLib 1.7 - MAX系列芯片.SchLib 1.8 - WiFi天线-SMA射频座.SchLib 1.9 - CH340系列编程器芯片.SchLib 2.0 - 保险丝-晶振-光耦.SchLib 2.1 - STM8L系列单片机.SchLib 2.2 - STM32 F0系列单片机.

2024-03-02

20.14 使用PDO报文同步循环发送温湿度数据-从机.rar

20.14 使用PDO报文同步循环发送温湿度数据-从机

2024-03-02

20.14 使用PDO报文同步循环发送温湿度数据-主机.rar

20.14 使用PDO报文同步循环发送温湿度数据-主机

2024-03-02

20.13 使用PDO报文定时发送温湿度数据-主机.rar

20.13 使用PDO报文定时发送温湿度数据-主机

2024-03-02

20.3 CAN过滤筛选器的使用.rar

20.3 CAN过滤筛选器的使用

2024-03-02

18.6 触摸屏驱动实现.rar

GD32F303各种使用场景代码实现

2024-03-02

16.6 SD保存带时间戳的温湿度记录.rar

GD32F303各种使用场景代码实现

2024-03-02

18.2 LCD驱动代码实现.rar

GD32F303各种使用场景代码实现

2024-03-02

17.2 EXMC驱动外部SRAM.rar

GD32F303各种使用场景代码实现

2024-03-02

15.3 调试空指针导致的死机问题.rar

GD32F303各种使用场景代码实现

2024-03-02

16.4 文件系统常用API解读.rar

GD32F303各种使用场景代码实现

2024-03-02

16.3 保存带时间戳的温湿度记录.rar

GD32F303各种使用场景代码实现

2024-03-02

14 IAP-Bootloader.rar

GD32F303各种使用场景代码实现

2024-03-02

15.2 调试除数为0导致的死机问题.rar

GD32F303各种使用场景代码实现

2024-03-02

13.2 单片机内部FLASH保存产品参数.rar

GD32F303各种使用场景代码实现

2024-03-02

空空如也

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

TA关注的人

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