- 博客(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
2657

原创 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
3959
原创 do{...}while(0)在程序中的作用
如果你是一名C程序员,你肯定很熟悉宏,他们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。
2023-09-13 23:21:52
295
原创 数据溢出判断
缘由:今天看到两个判断数据是否溢出的函数,感觉写的非常好,在此记录一下,看来编程技巧还是有待提高/******************************************************* @brief 判断两个无符号字符类型变量之和是否溢出* @parame x:参数1 y:参数2* @retval 1:两数之和未溢出 0:两数之和溢出* @note void*******************************************************
2022-04-01 21:56:06
439
原创 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
1849
原创 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
2911
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
3448
6
原创 S32K144:3.串口实验
/** ****************************************************************************** * @file exit.c * @author ZY * @version 0.0 * @date 2021.9.30 * @brief 实现按键外部中断功能 *********************************************************************
2021-10-08 17:32:15
1548
原创 S32K144:1.时钟配置
/** ****************************************************************************** * @file clocks_and_modes.c * @author ZY * @version 0.0 * @date 2021.9.27 * @brief 时钟配置 ***************************************************************
2021-09-29 17:31:27
2664
原创 字节向上/向下对齐算法分析
在内存管理中经常使用字节对齐来管理分配的内存。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
2544
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
1786
原创 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
1253
原创 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
1023
原创 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
1747
1
原创 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
1886
原创 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
2036
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
2826
原创 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
458
原创 STM32 外部中断事件与中断解析
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而.
2021-08-29 11:30:42
668
原创 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
1056
原创 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
3076
原创 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
407
原创 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
3780
1
原创 STM32 SystemCoreClockUpdate()函数详解
SystemCoreClockUpdate()作用:用来更新 SystemCoreClock 变量,在时钟配置完成之后,需要调用这个函数来更新 SystemCoreClock 变量;默认情况下:SystemCoreClock = 168000000(168MHz);配置相关参数导致HCLK不是168MHz时,需要调用SystemCoreClockUpdate()函数来更新SystemCoreClock 的值(即HCLK的频率),否则在使用SystemCoreClock变量时可能会导致错误产生;vo.
2021-08-22 21:53:37
7422
原创 AltiumDesigner导出Gerber文件
进入PCB界面,点击文件-制造输出-Gerber Files通用选项按照默认即可绘制层选择使用的,镜像层选择全部去掉,勾选包括未连接中间焊盘,层名都不勾选钻孔图层都不勾选光圈勾选嵌入的孔径高级按如图所示进行勾选完成后弹出如图页面,关闭并不保存选择PCB界面,点击文件-制造输出-Gerber Files通用层设置同上绘制层选择全部去掉,镜像层选择全部去掉,不勾选包括未连接中间焊盘,层名勾选制造1层钻孔图层分别勾选第一个选项光圈勾选嵌入的孔径(同上一次)高级按如.
2021-03-28 15:22:57
555
原创 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
9465
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人