- 博客(25)
- 资源 (18)
- 收藏
- 关注
原创 关于IRIG-B码对时的理解和分析
99 码元, 则 “秒” 信息位于第1, 2, 3, 4, 6, 7, 8码元, “分” 信息位于第10, 11, 12, 13,15, 16, 17 码元,“时” 信息位于第20, 21, 22, 23, 25, 26码元,“天” 信息位于第 30, 31, 32, 33, 35, 36, 37, 38,40, 41 码元。码元 “0” 和 “1” 对应的脉冲宽度为 2 ms 和 5 ms,“P” 码元是位置码元, 对应的脉冲宽度为 8 ms。即IRIG—A、B、D、E、G、H。
2023-05-09 16:02:37
4528
转载 锁相环原理
锁相环是一种利用相位同步产生电压,去调谐压控振荡器以产生目标频率的负反馈控制系统。锁相环就是通过负反馈控制系统,让压控振荡器的固有振荡频率fo 和输入的参考信号fi 的相位保持在误差允许范围内,从而让振荡频率fo达到和参考信号fi 同步相位频率的目的。
2023-03-01 15:49:22
5145
原创 STM32H7系列单片机串口DMA双区空闲中断接收方式(HAL库)
STM32H7系列单片机串口DMA双区空闲中断接收方式(HAL库),接收效率较高
2023-03-01 15:14:08
2741
原创 ZYNQ Linux双网口(PS-GEM端)共用一个MDIO问题BUG记录(适用Linux-xlxn.2018.2版本源码)
ZYNQ Linux双网口(PS-GEM端)共用一个MDIO问题BUG记录(适用Linux-xlxn.2018.2版本源码)
2023-02-28 14:47:34
3157
原创 NUC972在linux下的KSZ8851-16 mll网卡驱动开发
KSZ8851-16MLL是一款单端口以太网MAC与非PCI接口控制器,集成式MAC和PHY以太网控制器,可以替代DM9000。但是这个芯片的资料非常少,NUC972也是,百度全网也找不到有用的资料,无奈自己抠数据手册,最终解决了多个问题,写下这篇文章。这里吐槽一句,Microchip写的KSZ8851手册也太随意,有的地方完全是上一个框里面复制过来的,这只是其中一个。好了,下面开始进入正题,先贴上代码,这是在NUC972的Linux内核下的linux-3.10.x/drivers/net/etherne
2021-04-02 15:57:31
2092
原创 嵌入式linux驱动开发--驱动设备注册资源(非设备树方式)
本章在以NUC972为平台的Linux3.10.1中添加设备驱动。platform总线是linux中一种虚拟、抽象出来的总线,它将设备和驱动绑定。platform工作体系都定义在drivers/base/platform.c中,其有两个结构体:platform_device和platform_driverplatform_driver:struct platform_driver { int (*probe)(struct platform_device *); //探测函数,在注册平台设
2021-03-25 13:30:25
395
原创 STM32使用内部晶振配置成64M时钟频率
stm32系列使用内部晶振时钟配置方法void System_Clock_Init(void){ RCC_DeInit(); RCC_HSICmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); FL
2021-03-01 12:12:12
1673
原创 STM32系列等单片机使用cJSON格式
json格式在物联网云平台的通信中使用较多,下面贴上cjson代码,本文使用了rt-thread操作系统,所以跑裸机的需要自己实现void * CJSON_CDECL internal_malloc(rt_size_t size)、void CJSON_CDECL internal_free(void *pointer)、CJSON_CDECL internal_realloc(void *pointer, rt_size_t size)cJSON.c:/* Copyright (c) 2009-2
2021-03-01 12:08:19
3612
原创 STM32系列内部Flash擦写程序
stm32内部Flash擦写流程,对于FLash必须按页擦写,不同型号的flash页大小不同,需要根据实际修改#define FLASH_PAGE_SIZE 2048 //定义Flash页大小,RCT6页大小为2K(2048),c8t6为1k(1024)/* *对STM32内部FLASH写进行编程操作,需要遵循以下流程: *1.FLASH解锁 *2.清除相关标志位 *3.擦除FLASH(先擦除后写入的原因是为了工业上制作方便,即物理实现方便) *4.写入FLASH *
2021-03-01 12:00:20
1848
原创 基于STM32的通用按键任务处理方法
程序中需要使用到STM32官方库V3.5.0版本,当然如果使用其他版本可以根据要求自行更改,这里不啰嗦了,直接上程序首先在头文件中定义按键事件和宏定义,用于表示当前的按键状态:#define MY_BUTTON_DOWN_MS 50 //按下超过MY_BUTTON_DOWN_MS时间,认为按键为有效按下,过小容易出现抖动误判,过大会导致按键不灵敏#define MY_BUTTON_HOLD_MS 700 //当超过此数值时认为按键长按保持#define MY_BUT
2021-03-01 10:53:32
1470
原创 Modbus的CRC16校验算法
本文记录嵌入式系统常用的Modbus CRC16校验算法,程序采用查表法,虽占用一定空间,但是在嵌入式系统可以提高程序运行效率,避免每次发送modbus数据时计算结果而浪费大量时间
2021-03-01 10:17:11
1190
原创 Python基于十六进制数组AES(ECB)128位加密方法
1.高级加密标准AES(Advanced Encryption Standard),支持三种密码标准:128位、192位和256位。这里采用的是128位ECB加密模式,密钥为16字节十六进制数组。2.在加密之前先安装好对应的加密库:python 在Windows下安装pycryptodome 模块 pip install pycryptodome ;python 在Linux下...
2019-12-03 14:36:04
4540
1
转载 RT-Thread概述和架构
RT-Thread 概述RT-Thread,全称是Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统, 基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。 事实上,一个处理器核心在某一时刻只能运行一个任务,由于每次对一个任务的执行时间很短、 任务与任务之间通过任务调度器进行非常快速地切换(调度器根据优先级决定此刻该执行的任务)...
2019-08-21 09:08:16
4676
1
原创 C语言的一级指针和二级指针理解心得
我们在学习C的时候应该会听到这样的一句话,不学指针等于白学C,指针是C的灵魂。指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。 我们先来了解下一级指针,比如下面例子,...
2019-05-06 14:50:34
1140
1
原创 嵌入式Linux移植WIFI调试工具wpa_supplicant ,wpa_cli,wpa_passphrase解决方法 NUC972 ARM9
前言: 作者在调试ARM9板上WIFI驱动时,发现提供的wireless tools工具下的iwconfig,iwlist等等无法胜任,无法连接到WPA/WPA2等加密网络,这怎么办?后来了解到有wpa_supplicant强大的工具,可以连接iwconfig不能连接的网络,但是网上一大堆教程,有的不适用,版本不同编译方法也不同,编译不通过,下面列出具体的版本,按照流程即可编译成功。 一、从官网下载源码 下载wpa_supplicant-0.7.3.tar.gz (记得从下载旧版
2019-03-06 09:45:01
4330
2
原创 基于STM32F103系列单片机定时器产生10路PWM配置过程总结
由于本人使用的STM32F103RCT6做的项目,由于引脚分配问题,使用了三个定时器,代码已经测试过,均已调通,为方便大家调试PWM附上源码,通过调用void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)用来设置PWM信号的占空比,Compare1不超过arr自动重装载值,按照以下配置后可以正常调节PWM占空比对于72M频率的配置...
2019-01-11 15:22:38
2327
1
原创 基于STM32F103系列单片机四路定时器电机编码器模式配置过程附源码
STM32四路编码器模式配置方法概括双边沿触发模式(如下图,TI1,TI2的上升沿和下降沿都会进行计数),使用了四个定时器,TIM2,TIM3,TIM4,TIM8,中断是否需要根据自己情况修改,通过查询编码器 TIM2->CNT可知产生的脉冲数,如果用来测速,可以定时读取计数值并清零,速度=脉冲数/时间(单位自己确定),总体来说STM32的编码器器方式还是挺方便的,硬件自动计数无需软件计数,需要注意的就是计...
2019-01-11 14:33:02
9434
8
AR69132-v2018-2-patch.zip Xilinx ZYNQ Linux-2018.2版本
2023-02-28
Jlink v9.5 PCB文件原理图AD格式BOOTLOADER提取方法
2018-08-14
解决51单片机用串口显示12864zk问题无显示
2017-11-12
12864液晶程序及资料
2017-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人