周结|2023.11.18

本周学习内容

绘制STM32最小系统板

泪滴

参考:https://blog.csdn.net/qq_44705488/article/details/118229268

2023-11-18T04:49:02.png

  • 避免电路板受到巨大外力的冲撞时,导线与焊盘或者导线与导孔的接触点断开
  • 保护焊盘,避免多次焊接时焊盘的脱落,生产时可以避免蚀刻不均,以及过孔偏位出现的裂缝等。
  • 信号传输时平滑阻抗,减少阻抗的急剧跳变,避免高频信号传输时由于线宽突然变小而造成反射,可使走线与元件焊盘之间的连接趋于平稳过渡化。

铺铜

参考:https://zhuanlan.zhihu.com/p/567859828

2023-11-18T04:22:44.png

  • 将主要的地(GND,SGND(信号地),AGND(模拟地))连接在一起。
  • 提高PCB的散热能力
  • 降低地线阻抗以及提供屏蔽防护和噪声抑制。
  • 避免铜箔不均匀,导致PCB生产过程中出现变形,起翘等不良。
    批量过孔
参考:https://blog.csdn.net/gutie_bartholomew/article/details/123957575

2023-11-18T04:23:29.png

  • 使得元器件可以和GND完美接触,缩短走线距离和环路面积,改善EMC功能。
  • 对于大功率器件增加散热,控制元器件温升。
  • 增加系统稳定性。

遇到的问题

嘉立创无法导出ad文件

eda问题1ad ascii格式导出.png
导入ad重新以ascii格式导出

布线无从下手,画的很乱

参考:https://blog.csdn.net/weixin_44917390/article/details/119063237
基本流程:布局,布线,泪滴,铺铜,DRC检查
布线顺序:难点先布线,其他布线,电源线,地线
布局原则:
同一功能模块集中:相关功能的元件放置一起(在原理图框选元件后可在PCB中选中)
先难后易:重要的元件优先布局

stm32单片机学习

GPIO输入(按键控制led)

初始化GPIO:
步骤:配置GPIO>配置AFIO>配置EXTI>配置NVIC

/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); //将PA1和PA2引脚初始化为推挽输出

RCC_APB2PeriphClockCmd():使能或者失能APB2外设时钟
2023-11-18T05:06:44.png
GPIO_Mode:设置选中管脚的工作状态
【STM32】STM32F4 GPIO八种模式及工作原理详解
2023-11-18T05:02:56.png
GPIO_Pin:使用操作符“|”可以一次选中多个管脚。
2023-11-18T05:03:39.png
GPIO_Speed:设置选中管脚的速率
2023-11-18T05:04:32.png

外部中断

2023-11-18T05:14:07.png

	/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO的时钟,外部中断必须开启AFIO的时钟

/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //将PB14引脚初始化为上拉输入

/*AFIO选择中断引脚*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);//将外部中断的14号线映射到GPIOB,即选择PB14为外部中断引脚

/*EXTI初始化*/
EXTI_InitTypeDef EXTI_InitStructure; //定义结构体变量
EXTI_InitStructure.EXTI_Line = EXTI_Line14; //选择配置外部中断的14号线
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //指定外部中断线使能
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //指定外部中断线为中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //指定外部中断线为下降沿触发
EXTI_Init(&EXTI_InitStructure); //将结构体变量交给EXTI_Init,配置EXTI外设

/*NVIC中断分组*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置NVIC为分组2
//即抢占优先级范围:0~3,响应优先级范围:0~3
//此分组配置在整个工程中仅需调用一次
//若有多个中断,可以把此代码放在main函数内,while循环之前
//若调用多次配置分组的代码,则后执行的配置会覆盖先执行的配置

/*NVIC配置*/
NVIC_InitTypeDef NVIC_InitStructure; //定义结构体变量
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //选择配置NVIC的EXTI15_10线
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //指定NVIC线路使能
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //指定NVIC线路的抢占优先级为1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //指定NVIC线路的响应优先级为1
NVIC_Init(&NVIC_InitStructure); //将结构体变量交给NVIC_Init,配置NVIC外设
}

开启时钟:开启AFIO时钟
GPIO:工作模式设置为输出
GPIO_ReadInputDataBit() 读取电平数据
AFIO:GPIO_EXTILineConfig()中断引脚选择
EXTI:
EXTI_Line 选择了待使能或者失能的外部线路。
2023-11-18T05:22:34.png
EXTI_Mode 设置被使能线路的模式
2023-11-18T05:23:15.png
EXTI_Trigger 设置被使能线路的触发边沿。
2023-11-18T05:24:05.png

NVIC:
NVIC_PriorityGroupConfig() 设置优先级分组
2023-11-18T05:28:08.png
IRQChannel 使能或者失能指定的IRQ通道。
2023-11-18T05:25:54.png
2023-11-18T05:26:38.png
NVIC_IRQChannelPreemptionPriority 抢占优先级
NVIC_IRQChannelSubPriority 响应优先级

中断函数void EXTI15_10_IRQHandler(void)
函数名为预留的指定名称,可以从启动文件复制
EXTI_GetITStatus() 检查指定的EXTI线路触发请求发生与否
EXTI_ClearITPendingBit() 清除中断标志位
2023-11-18T05:34:14.png

更换鼠标微动

ade10b07cad61150f418c81dc8ea473.jpg

路由器翻墙

2023-11-18T05:38:11.png

下周计划

尽量学习江协的stm32视频,6-9章

##未来学习规划
本学期学习完32单片机(江协科技)
完成极客赛和寻迹迷宫小车的比赛
制作平衡小车
学习pcb板绘制的更多知识