周结|2023.11.18
发表于更新于
字数总计:1.2k阅读时长:4分钟 中国
周结|2023.11.18
Zehua本周学习内容
绘制STM32最小系统板
泪滴:
参考:https://blog.csdn.net/qq_44705488/article/details/118229268
|

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

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

- 使得元器件可以和GND完美接触,缩短走线距离和环路面积,改善EMC功能。
- 对于大功率器件增加散热,控制元器件温升。
- 增加系统稳定性。
遇到的问题
嘉立创无法导出ad文件


导入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);
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);
|
RCC_APB2PeriphClockCmd():使能或者失能APB2外设时钟

GPIO_Mode:设置选中管脚的工作状态
【STM32】STM32F4 GPIO八种模式及工作原理详解

GPIO_Pin:使用操作符“|”可以一次选中多个管脚。

GPIO_Speed:设置选中管脚的速率

外部中断

/*开启时钟*/ 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 选择了待使能或者失能的外部线路。

EXTI_Mode 设置被使能线路的模式

EXTI_Trigger 设置被使能线路的触发边沿。

NVIC:
NVIC_PriorityGroupConfig() 设置优先级分组

IRQChannel 使能或者失能指定的IRQ通道。


NVIC_IRQChannelPreemptionPriority 抢占优先级
NVIC_IRQChannelSubPriority 响应优先级
中断函数void EXTI15_10_IRQHandler(void)
函数名为预留的指定名称,可以从启动文件复制
EXTI_GetITStatus() 检查指定的EXTI线路触发请求发生与否
EXTI_ClearITPendingBit() 清除中断标志位

更换鼠标微动

路由器翻墙

下周计划
尽量学习江协的stm32视频,6-9章
##未来学习规划
本学期学习完32单片机(江协科技)
完成极客赛和寻迹迷宫小车的比赛
制作平衡小车
学习pcb板绘制的更多知识