自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 PCB钻孔与焊盘大小

2020.07.10 在此记录,便于日后查询元件孔孔径=元件引脚直径(或对角线)+(10mi~30mil 0.254mm ~0.762mm)元件焊盘直径>=元件孔直径+18mil(0.4572mm)过孔孔径:主要由成品板的厚度决定,应控制 板厚:孔径 <=5:1,一般双层板厚度为1.6mm,则孔径>=0.3mm(12mil)过孔焊盘直径>=过孔直径+20mil...

2020-07-10 13:49:11 2416

原创 PCB设计常用网站

2020.07.09 因误删文件导致浏览器收藏书签被删除,故在此记录下PCB设计时用到的网站,便于日后查询。芯片数据手册查看、封装下载网站:https://www.ultralibrarian.com/芯片数据手册查看网站:http://www.semiee.com/3D封装下载网站:https://www.3dcontentcentral.cn/嘉立创制板标准:https://wenku.baidu.com/view/d5262829453610661ed9f409.html...

2020-07-09 15:32:32 3813

原创 do{...}while(0)在程序中的作用

如果你是一名C程序员,你肯定很熟悉宏,他们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。

2023-09-13 23:21:52 260

原创 每日一个算法:冒泡排序

简略介绍冒泡排序的原理,使用C语言实现冒泡排序

2023-03-15 21:44:25 196

原创 操作系统:哲学家就餐问题

使用C语言实现哲学家就餐问题,并以破除依赖的方法解决了死锁问题。

2022-11-01 20:09:00 3565 3

原创 数据结构:选择排序及归并排序

使用C语言实现选择排序,包括简单选择排序、堆排序、合并排序。

2022-08-10 20:29:55 258

原创 数据结构:交换排序

使用C语言实现交换排序算法,其中包括冒泡排序及快速排序

2022-08-09 22:02:38 171

原创 数据结构:插入排序

使用C语言实现插入排序相关的算法

2022-08-09 19:36:09 379

原创 数据结构:链队列的基本操作

使用C语言实现链队列的基本操作

2022-07-08 22:23:06 463

原创 数据结构:循环顺序队列的基本操作

使用C语言实现循环顺序队列的基本操作

2022-07-06 21:06:39 399

原创 数据结构:链栈的基本操作

使用C语言实现链栈的基本操作

2022-07-06 20:58:23 597

原创 数据结构:顺序栈的基本操作

使用C语言实现顺序栈的基本操作,并且测试了程序的正确性。

2022-07-03 15:31:00 361

原创 数据结构:单链表线性表的基本操作

使用C预压实现单链表线性表的基本操作

2022-07-03 10:47:11 865

原创 数据结构:顺序线性表的基本操作

C语言实现数据结构顺序线性表的基本操作

2022-07-02 09:24:36 247

原创 浮点数(3.14+1e10)-1e10 = 0的过程分析

推解过程如下所示:

2022-04-09 18:31:07 1091

原创 数据溢出判断

缘由:今天看到两个判断数据是否溢出的函数,感觉写的非常好,在此记录一下,看来编程技巧还是有待提高/******************************************************* @brief 判断两个无符号字符类型变量之和是否溢出* @parame x:参数1 y:参数2* @retval 1:两数之和未溢出 0:两数之和溢出* @note void*******************************************************

2022-04-01 21:56:06 409

原创 STM32之DAC操作

告知:在工程中,使用DAC输出电压,使用ADC进行电压采样,使用串口打印电压到电脑,相关功能的底层知识及寄存器配置就不在此赘述(主要是网上的大神讲的清清楚楚,野火及原子的教程也很详细),本工程大部分代码源于正点原子,请参阅原子源代码或教程获取更多知识!1.DAC配置:#include "dac.h"void Dac1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_A

2021-12-10 21:54:41 1733

原创 S32K144:13.ADC单通道转换

1.时钟使能2.引脚配置3.ADC配置4.采样通道配置本例中使用PTD4,通道65.奉上代码#include "Cpu.h"#include "led.h" volatile int exit_code = 0;#define ADC_VREFH 5.0f#define ADC_VREFL 0.0ffloat adcValue;float adcVol;uint16_t adcRawValue;uint16_t adcMax;/** * @brief ADC

2021-10-24 22:15:34 2845 2

原创 S32K144:12.LPI2C驱动AT24C16

1.打开官方例程2.修改引脚配置3.时钟可按照实际情况修改,也可不用更改,本例时钟不做更改4.配置LPI2C模块设置从机地址:从机地址如下图所示,低三位表示为AT24C16的块地址,AT24C16将2KB的内存空间分为8个块,每个块256个字节的数据,此处先读写块0的内存,故将地址设置为0x50。I2C频率设置:此处使用标准模式速率为100KHz。按照AT24C16手册,也可配置为快速模式400KHz或1MHz,可按照需求配置。5.按页写入数据到AT24C16按照时序,先发送器件地

2021-10-21 21:42:23 3167 6

原创 S32K144:3.串口实验

/** ****************************************************************************** * @file exit.c * @author ZY * @version 0.0 * @date 2021.9.30 * @brief 实现按键外部中断功能 *********************************************************************

2021-10-08 17:32:15 1456

原创 S32K144:1.时钟配置

/** ****************************************************************************** * @file clocks_and_modes.c * @author ZY * @version 0.0 * @date 2021.9.27 * @brief 时钟配置 ***************************************************************

2021-09-29 17:31:27 2413

原创 字节向上/向下对齐算法分析

在内存管理中经常使用字节对齐来管理分配的内存。1、原理2字节对齐:要求地址位为2, 4, 6, 8…,地址的二进制最后一位为0(2的1次方)。4字节对齐:要求地址位为4,8,12,16…,地址的二进制最后两位为0(2的2次方)。8字节对齐:要求地址位为8,16,24,32…,地址的最后三位为0(2的3次方)。16字节对齐:要求地址位为16,32,48,64…,地址的最后四位为0(2的4次方)。…2、向上对齐算法1:/** @brief: 向上对齐算法 @param n:需要对齐数据

2021-09-19 22:25:01 2289 2

原创 STM32之DMA及USART使用

头文件:#ifndef __USART_H#define __USART_H/* 引用头文件 */#include "stm32f10x.h"/* 接口定义 */#define MY_USART USART1#define MY_USART_BaudRate 115200#define TIMOUT (uint32_t)0xFFF#define BUFFER_SIZE

2021-09-14 15:13:23 1709

原创 STM32之寄存器操作基本定时器

#ifndef __BASIC_TIMER_H#define __BASIC_TIMER_H#include "stm32f10x.h"#define My_BASIC_TIM TIM6#define My_RCC_TIM6_EN (uint32_t)0x00000010#define My_BASIC_UIF (uint32_t)0x00000001 // Update Interrupt Flag#define M

2021-09-10 17:12:10 1187

原创 STM32F103之时钟配置

sysclock.h文件:#ifndef __SYSCLOCK_H#define __SYSCLOCK_H#include "stm32f10x.h"void My_HSE_SetSysClock(void);#endifsysclock.c文件:#include "sysclock.h"/* * RCC相关寄存器初始化 */static void My_RCC_DeInit(){ /* 内部高速时钟使能 */ RCC->CR |= (uint32_t)0x00

2021-09-07 21:17:49 950

原创 STM32之谨慎对待while

代码片段1: /* 等待PLL稳定 */ tmpreg = (uint32_t)RCC->CR & (uint32_t)RCC_CR_PLLRDY; while(tmpreg == 0){ }代码片段2: while((RCC->CR & RCC_CR_PLLRDY) == 0) { }注意:上述两段代码看似表达的意思是一样的,但其实不然。片段一进行了1次判断后进入无限循环;代码2则是在判断——循环之间来回跳跃,起到等待作用。20

2021-09-07 20:50:47 1482

原创 STM32 硬件I2C读写AT24C02/08

#ifndef __I2C_H#define __I2C_H#include "stm32f10x.h"/**************************I2C参数定义,I2C1或I2C2********************************/#define EEPROM_I2Cx I2C1#define EEPROM_I2C_APBxClock_FUN

2021-09-02 17:15:01 1676

原创 STM32操作DS1302

#ifndef __DS1302_H#define __DS1302_H#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"#include "systick.h"#define CE_L GPIO_ResetBits(GPIOC,GPIO_Pin_4) // 拉低使能位#define CE_H GPIO_SetBits(GPIOC,GPIO_Pin_4) // 拉高使能位#d

2021-08-31 14:40:48 1995 3

原创 STM32双向I/O问题

疑问:STM32的I/O可以像51单片机那样既能写也能读吗?翻看手册,直到看见手册这段话:测试:I/O配置为推挽输出,读取输入数据寄存器上对应的位数据,将读取值返回到串口;实现过程:1)配置PA15为推挽输出,使用PC5做对比;void KEY_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENAB.

2021-08-30 21:38:35 2484

原创 STM32外部中断:寄存器版

EXTI0头文件:#ifndef __EXIT_H#define __EXIT_H#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "led.h"void Exit0_Init(void);#endifEXTI0源文件:#include "exit.h"/* * 外部中断0 PA0 * 1.使能GPIOA时钟;2.使能复用功能IO时钟;3.配置AFIO中断输入 * 4.打开线0中断请求;5.允许上升沿触发

2021-08-29 15:27:12 414

原创 STM32 外部中断事件与中断解析

这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而.

2021-08-29 11:30:42 603

原创 STM32 NVIC相关库函数解析

一、中断优先级分组函数:1)相关寄存器实际上,STM32的中断优先级只用到高4位,如下图所示:void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup){ /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to NVIC_

2021-08-29 11:03:43 975

原创 STM32 使用CAN进行通信

#ifndef __CAN_H#define __CAN_H#include "stm32f10x.h"#include "stm32f10x_can.h"#define CAN_RX0_INT_ENABLE ENABLE#define TESTID (0x0CF11AD0 & 0xFFFFFFFF)#define HAN_TESTID ((TESTID<<3) | (0x01<<2) | (0x00<<1))uint8_t Can_Mod

2021-08-27 15:15:26 2894

原创 STM32 使用滴答定时器来延时

#ifndef __SYSTICK_H#define __SYSTICK_H#include "stm32f10x.h"#define SetTim_1us 72#define SetTim_10us SetTim_1us*10#define SetTim_1ms SetTim_1us*1000void SysTick_Init(void);void Delay_us(uint32_t time);void Delay_ms(uint32_t time);#endi

2021-08-26 09:20:45 374

原创 CorTex-M3权威指南-滴答定时器

2021-08-26 07:17:37 276

原创 KEIL关于core_cm3.c的错误

Build started: Project: Template*** Using Compiler 'V6.16', folder: 'F:\Program_File\MDK534\ARM\ARMCLANG\Bin'Build target 'Template'../CORE/core_cm3.c(445): error: non-ASM statement in naked function is not supported uint32_t result=0; ^../CORE/cor

2021-08-23 20:24:42 3562 1

原创 STM32 SystemCoreClockUpdate()函数详解

SystemCoreClockUpdate()作用:用来更新 SystemCoreClock 变量,在时钟配置完成之后,需要调用这个函数来更新 SystemCoreClock 变量;默认情况下:SystemCoreClock = 168000000(168MHz);配置相关参数导致HCLK不是168MHz时,需要调用SystemCoreClockUpdate()函数来更新SystemCoreClock 的值(即HCLK的频率),否则在使用SystemCoreClock变量时可能会导致错误产生;vo.

2021-08-22 21:53:37 6633

原创 AltiumDesigner导出Gerber文件

进入PCB界面,点击文件-制造输出-Gerber Files通用选项按照默认即可绘制层选择使用的,镜像层选择全部去掉,勾选包括未连接中间焊盘,层名都不勾选钻孔图层都不勾选光圈勾选嵌入的孔径高级按如图所示进行勾选完成后弹出如图页面,关闭并不保存选择PCB界面,点击文件-制造输出-Gerber Files通用层设置同上绘制层选择全部去掉,镜像层选择全部去掉,不勾选包括未连接中间焊盘,层名勾选制造1层钻孔图层分别勾选第一个选项光圈勾选嵌入的孔径(同上一次)高级按如.

2021-03-28 15:22:57 437

原创 Matlab:License checkout failed. License Manager Error-95解决办法与Matlab加速启动

安装后打开Matlab出现以下错误信息:解决办法:将crack文件夹下license_standalone.dat复制到matlab安装目录licenses文件夹下,并改名为license.dat即可。Matlab加速启动:1.找到你的License文件的绝对路径,一般在***\Polyspace\R2019a\licenses路径下,一个带有你电脑名的lic文件;2.找到matlab的桌面快捷方式-右键-属性-找到目标框;3.在目标栏中添加 -c “D:\Polyspace\R2019a\lic

2020-12-02 17:28:35 8945 2

原创 AD避开某些区域覆铜

转载于:http://steve643.lofter.com/post/1252dc_2b3914d2020.07.25

2020-07-25 20:39:09 3734

51单片机汇编语言定时器数码管

基于51单片机的汇编定时器+数码管设计,文件包含基于KEIL的汇编源代码以及PROTEUS仿真图,实现定时器定时,数码管显示功能。

2020-05-12

空空如也

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

TA关注的人

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