如何当好硬软件助理工程师——实习周报(一)

news2024/11/15 9:41:46

如何当好硬软件助理工程师——实习周报

如何当好硬软件助理工程师——实习周报(一)


文章目录

  • 如何当好硬软件助理工程师——实习周报
  • 前言
  • 一、问题积累
    • 1.git 指令
    • 2.Coding的使用
    • 3.代码中的知识点(HAL库、Flash读写)
      • a.gpio配置
      • b.flash配置
    • 4.贴片焊接
    • 5.封装尺寸标号与不同的电阻读取方法
      • a.封装尺寸标号
      • b.电阻读取方法
  • 总结


前言

对于没有实习经历的同学来说,第一次实习有两种方式,一:摆烂,只是上班学一下,半天做不出什么东西出来,被领导嫌弃,但是还能凑合用,算了,再培养几天吧。二、记的快,学的快,做的快,把教过的东西迅速记录,并且不重复提问(这样才不会被嫌弃),小公司领导老板看重,想留你下来,大公司或许可以给个转正机会,哪怕不给,知识是你自己学的,以后正式工作还能用。

一、问题积累

1.git 指令

这个指令主要用于版本管理,上传代码,给代码加分支的之后需要用到,我自己在电脑上下载了一个git,常见的git指令如下:

在下载安装完成后按照如下步骤:

//写入标签
a.git config --global user.name 你的用户名(可以随意起)
b.git config --global user.email 你的邮箱名(可以随意起)
//检验是否写入成功。
c.cat ~/.gitconfig
//然后在github或者Coding上建立自己的代码仓库,这个看个人公司需求选择。
//在当前代码工程目录处打开终端,并进行初始化
d.git init	//初始化git仓库
//将当前代码保存到本地代码仓库
e.git add .   //注意这个点与add之间有空格,点的意思是指当前文件夹所有文件
//将项目从暂存区保存到本地仓库
f.git commit -m "这是个没用的工程文件"  //引号包含的是一些备注信息
//再配置远程仓库的地址,这个时候需要复制github或者Coding的仓库地址
g.git remote add origin 远程仓库地址
//将本地仓库项目传到远程仓库
h.git push -u origin master		//第一次写-u,后面就可以用git push 代替git push origin master

//如果需要确保该项目每次的改动都会更新,那么每次都需要pull一下
i.git pull
//当其他人要协助你改动该项目代码的时候,切换到想要保存项目的文件夹,然后下载
j.cd 想要保存的文件夹地址
k.git clone 仓库链接

//一些操作指令
git pull origin master	//把主分支拉下来
git push <远程主机名> <本地分支名>:<远程分支名>	//创建远程分支

git checkout -b (branchName) //创建本地分支并切换
//创建本地分支并切换(第二种方式)
git branch dev       //创建分支
git checkout dev     //切换到分支

git branch			//如果不添加任何参数,则代表显示本地所有分支,分支名前面有*号的代表当前正处于哪个分支
git branch -v		//查看本地分支+上次提交的信息
git branch -vv -a	//查看本地分支+上次提交的信息+本地和远程分支的关系+远程分支
git branch -r		//查看远程分支
git branch -d (branchName)	//删除本地分支
//删除远程分支
git push <主机名> -d <分支名>
git checkout (branchName)	//切换本地分支
git branch (branchName) //创建本地分支

对应操作截图:
a.安装
在这里插入图片描述
b.安装好了之后右键可以看到Git GUI和Git Bash,前者是可视化工具,后者是命令工具(一般用这个)。

在这里插入图片描述
c.创建一个工程测试一下,创建好之后右键Git bash
在这里插入图片描述
然后就是上面的指令操作了

2.Coding的使用

进入Coding官网(https://weallknow.coding.net/),问老板要个企业邮箱注册。让管理员/老板把你拉进入项目组,利用git指令进行操作。
个人使用方法:
a.个人邮箱注册,创建一个项目,随便创建一个代码仓库,并初始化(readme.md文件就是markdown文件,比如我现在用的csdn写博客就是用的markdown——一种标记语言)。

b.点击通知可以看见项目的
b.点击仓库右上角的克隆即可得到链接地址
在这里插入图片描述
c.push的时候需要登录验证(不然谁都能向仓库传垃圾了)
在这里插入图片描述

d.遇到了一个错误,push失败
在这里插入图片描述
e.看了一下其他文章,说是"我们在创建仓库的时候,都会勾选“使用Reamdme文件初始化这个仓库”这个操作初识了一个README文件并配置添加了忽略文件。当点击创建仓库时,它会帮我们做一次初始提交。于是我们的仓库就有了README.m和.gitignore文件,然后我们把本地项目关联到这个仓库,并把项目推送到仓库时,我们在关联本地与远程时,两端都是有内容的,但是这两份内容并没有联系,当我们推送到远程或者从远程拉取内容时,都会有没有被跟踪的内容,于是你看git报的详细错误中总是会让你先拉取再推送,但是拉取总是失败。"

f.先使用

git pull --rebase origin master

再push

git push -u origin master

push成功
在这里插入图片描述

3.代码中的知识点(HAL库、Flash读写)

HAL固件库是Hardware Abstraction Layer的缩写,硬件抽象层

a.gpio配置

//与大多数32位机定义相同,利用结构体赋值,选择引脚,输入模式,上拉下拉选择,引脚端口选择。
	GPIO_InitTypeDef  gpioinitstruct1={0};
	gpioinitstruct1.Pin    = GPIO_PIN_4;
	gpioinitstruct1.Mode = GPIO_MODE_INPUT;
	gpioinitstruct1.OpenDrain = GPIO_PUSHPULL;	
	gpioinitstruct1.Debounce.Enable = GPIO_DEBOUNCE_DISABLE;
	gpioinitstruct1.SlewRate = GPIO_SLEW_RATE_HIGH;
	gpioinitstruct1.DrvStrength = GPIO_DRV_STRENGTH_HIGH;
	gpioinitstruct1.Pull = GPIO_PULLUP;
	HAL_GPIO_Init(GPIOD, &gpioinitstruct1);
	//利用HAL库读取GPIO对应引脚此时的电压值
	HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_4)

b.flash配置

在写入或者读取Flash内部数据的时候我们需要设定数据的起始以及结束地址,这一块对于代码的数据类型要求比较严格,一定要注意uint8_t和uint16_t还有uint32_t等细节。

//定义好程序起始结束地址
#define FLASH_PROGRAM_ADDRESS_START				0xA000
#define FLASH_PROGRAM_ADDRESS_END				0xA200

a.Flash写入

//以写入5个8位数据为例
uint8_t ADDR_cnt = 0;
while (FLASH_PROGRAM_ADDRESS_START < FLASH_PROGRAM_ADDRESS_START+5+1)//一直读到起始后的第六个空间
{
	//HAL_FLASH_Program函数的第一个输入可以选择是BYTE、HALFWORD、WORD类型的数据
	HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, FLASH_PROGRAM_ADDRESS_START, Record[ADDR_cnt]);
	FLASH_PROGRAM_ADDRESS_START  = FLASH_PROGRAM_ADDRESS_START  + 1 ;//由于数据是8位的,故地址每次仅+1个字节
	ADDR_cnt ++;
}

b.Flash读取

//以读取5个8位数据为例
uint8_t ADDR_cnt = 0;
while (FLASH_PROGRAM_ADDRESS_START < FLASH_PROGRAM_ADDRESS_START+5+1)//一直读到起始后的第六个空间
{
	Record[ADDR_cnt] = FLASH_PROGRAM_ADDRESS_START ;	//将对应地址的数据存入Record数组
	FLASH_PROGRAM_ADDRESS_START  = FLASH_PROGRAM_ADDRESS_START  + 1 ;//由于数据是8位的,故地址每次仅+1个字节
	ADDR_cnt ++;
}

c.Flash擦除
要想写入数据,我们必须要先擦除
官方代码是在定义结构体之后选择擦除类型、擦除地址。

#define FLASH_EraseInitTypeDef 	sFlashErase; 
#define FLASH_PROGRAM_ADDRESS_START				0xA000
#define FLASH_PROGRAM_ADDRESS_END				0xA200

sFlashEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
sFlashEraseInit.PageAddress = FLASH_PROGRAM_ADDRESS_START;
sFlashEraseInit.NbPages	= (FLASH_PROGRAM_ADDRESS_END -FLASH_PROGRAM_ADDRESS_START)/FLASH_PAGE_SIZE + 1;
//并非完整例程,请自行查阅资料

对Flash的操作除了上述三种之外还有一些确认擦除、读、写操作。

4.贴片焊接

平时基本都是焊排针这些直插的元件,只是焊过几次贴片,没想到在公司焊接的时候完全和小白一样。我这边搜到了一些贴片焊接知识放在下面了。
用到铜丝松香酒精的焊法:别人的博客
公司教我的:
1.在板子上涂一些焊锡膏(用镊子,能铺满就行,看情况而定)
2.此时镊子比较粘,可以粘起小元件,然后放到焊锡膏上面
3.用热风枪加热,切记靠近时要慢慢移动,而且一定要垂直,不然把其他元件吹走了。
4.板子和镊子都比较粘,用那个酸性液体洗干净(不好意思我忘了那个叫啥)。

5.封装尺寸标号与不同的电阻读取方法

进了公司物料房我第一反应是,焊接的东西在哪,找了半天电阻之后,发现怎么和板子上的不一样大,好家伙,原来还有不同的封装大小标号。我把能找的都找一下放下面。

a.封装尺寸标号

按照尺寸大小分为:
0201是目前最小的尺寸(0603) 0.6*0.3 长:10.6 宽:0.3(单位:mm 下同)。

0402是1005 1.0*0.5。

0603是1608 1.6*0.8。

0805是2012 2.0*1.2。

1206是3216 3.2*1.6。
所以其实看标号就知道哪个大哪个小了。

b.电阻读取方法

我们常见的基本都是三数码法,前两个有效位,最后一个是10的几次方。但是我在公司焊接的时候前面没问题,突然找不到10K的电阻了,绝,原来它突然换名字了。
电阻器阻值的5种标示方法:

第一种,直标法:用数字和单位符号在电阻器表面标出阻值,其允许误差直接用百分数表示,若电阻上未注偏差,则均为±20%。

第二种,文字符号法:用阿拉伯数字和文字符号两者有规律的组合来表示标称阻值,其允许偏差也用文字符号表示。符号前面的数字表示整数阻值,后面的数字依次表示第一位小数阻值和第二位小数阻值。表示允许误差的文字符号文字符号:DFGJKM允许偏差分别为:±0.5%±1%±2%±5%±10%±20%

第三种,数码法:在电阻器上用三位数码表示标称值的标志方法。数码从左到右,第一、二位为有效值,第三位为指数,即零的个数,单位为欧。偏差通常采用文字符号表示。

第四种,色标法:用不同颜色的带或点在电阻器表面标出标称阻值和允许偏差。国外电阻大部分采用色标法。

黑-0、棕-1、红-2、橙-3、黄-4、绿-5、蓝-6、紫-7、灰-8、白-9、金-±5%、银-±10%、无色-±20%

当电阻为四环时,最后一环必为金色或银色,前两位为有效数字,第三位为乘方数,第四位为偏差。

当电阻为五环时,最後一环与前面四环距离较大。前三位为有效数字,第四位为乘方数,第五位为偏差。

第五种,没错我就是不认识这种标法。
E-96标准计数法
E-96计数法最后的字母代表乘数,如A表示10的0次方,B表示10的1次方,等,具体对应关系见下表。前面的数字并不是代表阻值,而是阻值代号(注意:这个字母只有A-H和XYZ这几个,没有JKLM乱七八糟的字母)。
A到H分别对应10的0到7次方,XYZ则对应-1,-2,-3次方。

这里还有电阻命名型号给大家(我)看,防止大家(我)被领导嫌弃。
在这里插入图片描述

总结

第一周实习,我是相当相当的喜欢,至于其他人应该就是相当相当的不喜欢哈哈哈,毕竟太菜了。但是好在学的够快,只要我学的速度比老板kick我的速度快,就还能留在公司混一混。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员必备的画图工具汇总

文章目录1、简介2、draw.io3、Excalidraw4、Xmind5、语雀6、Database6.1 dbdiagram.io6.2 sqldbm6.3 QuickDBD7、UML7.1 plantuml7.2 Graphviz结语1、简介 优秀的作图工具有许多&#xff0c;例如文本绘图工具 PlantUML&#xff0c;流程图设计工具 Draw.io&#xff0c;还有专业…

ORA-01861: literal does not match format string

系统&#xff1a;AnolisOS7.9 数据库&#xff1a;Oracle11.2.0.4 问题描述&#xff1a;执行TSPITR时&#xff0c;报错ORA-01861&#xff0c;如下所示&#xff1a; [oracleliujun~]$ export NLS_DATE_FORMATyyyy-mm-dd hh24:mi:ss [oracleliujun~]$ export NLS_LANGAMERICAN…

手写Mybatis源码(原来真的很简单!!!)

目录一、JDBC操作数据库_问题分析二、自定义持久层框架_思路分析三、自定义框架_编码1、加载配置文件2、创建两个配置类对象3、解析配置文件&#xff0c;填充配置类对象4、创建SqlSessionFactory工厂接口及DefaultSqlSessionFactory实现类5、创建SqlSession会话接口及DefaultSq…

R语言和医学统计学(10):正态性和方差齐性检验

本文首发于公众号&#xff1a;医学和生信笔记&#xff0c;完美观看体验请至公众号查看本文。 医学和生信笔记&#xff0c;专注R语言在临床医学中的使用&#xff0c;R语言数据分析和可视化。 文章目录前言正态性检验shapiro wilk检验kolmogorov smimov检验方差齐性检验两样本方差…

SSH框架重构需求,起码读懂代码和前端的原生JS

文章目录SSH(Spring Struts Hibernate)商城老项目JSPHtmlJsJquery 老项目部署Tomcat上面进行部署可以一次性部署多个项目1.Spring2.Struts3.Hibernate(持久层一个重量级框架)4.里面的请求路径解析SSH(Spring Struts Hibernate)商城老项目JSPHtmlJsJquery 老项目部署 Tomca…

【JavaSE之JDK8新特性】三万字详文带你了解JDK8新特性

JDK8新特性一、Lambda1.1需求分析2.Lambda表达式的初级体验3.Lambda表达式的语法规则3.1.Lambda练习13.2.Lambda表达式练习24.FunctionalInterfa注解说明5.Lambda表达式的原理6.Lambda表达式的省略写法7.lambda表达式的使用前提8.lambda和匿名内部类的对比二、接口中新增的方法…

#define宏的妙用!实现你以为的函数offsetof等

目录 一.#define 1.1#define的使用 1.2在define定义标识符的时候&#xff0c;要不要在最后加上 ;? 二.#define定义宏 2.1好代码的写法: 2.2#define 替换规则 2.3#和## 三.带有副作用的宏参数 四.宏和函数的对比 五.实现offetof 思路解析过程&#xff1a; 代码实现&am…

破解系统密码

一、利用5次shift漏洞破解win7密码 1.1 漏洞 1. 在未登录时&#xff0c;连续按5次shift键&#xff0c;弹出程序C:\Windows\System32\sethc.exe 2. 部分win7及win10系统在未进入系统时&#xff0c;可以通过系统修复漏洞篡改系统文件名&#xff01; 注意&#xff1a;如win7或win…

SpringBoot/Spring AOP默认动态代理方式

Spring 5.x中AOP默认依旧使用JDK动态代理SpringBoot 2.x开始&#xff0c;AOP为了解决使用JDK动态代理可能导致的类型转换异常&#xff0c;而使用CGLIB。在SpringBoot 2.x中&#xff0c;AOP如果需要替换使用JDK动态代理可以通过配置项spring.aop.proxy-target-classfalse来进行修…

【Linux】7.0 信号

文章目录信号的基本概念kill -l 查看信号列表信号的处理方式signal( ) 自定义处理信号信号的产生方式键盘产生进程异常&#xff08;core dump&#xff09;系统调用软件条件信号的发送&#xff08;OS&#xff09;信号常见相关名词解释进程接收处理信号原理信号集函数的使用打印p…

【Redis】3.详解分布式锁

文章目录1. 什么是分布式锁2. 分布式锁的特点3. 常见的分布式锁4. 实现分布式锁5.解决分布式锁中的原子性问题5.1 Lua脚本5.2 使用Java代码调用Lua脚本实现原子性1. 什么是分布式锁 分布式锁是指分布式系统或者不同系统之间共同访问共享资源的一种锁实现&#xff0c;其是互斥的…

【Django框架】——20 Django视图 02 路由命名和反向解析

文章目录一、 路由命名二、reverse反向解析三、通过URL模板页面进行传参四、namespace1.reverse反向解析2.url模板标签在 Django 项⽬中&#xff0c;⼀个常⻅需求是获取最终形式的 URL&#xff0c;⽐如⽤于嵌⼊⽣成的内容中&#xff08;视图和资源⽹址&#xff0c;给⽤户展示⽹…

《网络安全笔记》第七章:注册表基础

一、注册表基础 1、概述 注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”&#xff0c;也可以说是一个非常巨大的树桩分层结构的数据库系统注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息&#xff0c;它包括了计算…

【UDS】ISO14229之0x2F服务

文章目录前言一、理论描述二、使用步骤1.请求2.响应总结->返回总目录<- 前言 简称&#xff1a; “InputOutputControlByIdentifier”&#xff0c;根据标识符控制输入输出 功能&#xff1a; 根据标识符控制输入输出服务用于替换输入信号的值、电控单元内部参数或控制电子…

Telnet连接

❤️人生没有白走的路&#xff0c;每一步都算数❤️ 你是否安装Telnet没毛病&#xff0c;但登录总报错&#xff1f; 巧了&#xff0c; 我也遇到了。 于是我打开浏览器尝试搜索&#xff0c;有许多说的并不详细。 所以呢就有了这篇文章&#xff01; 首先我们准备实验环境&#xf…

oracle中替换字符串的不同写法

replace函数 replace(原字段&#xff0c;“原字段旧内容“,“原字段新内容“) 例如将DEPTNO字段值中的0替换为1&#xff1a; TRANSLATE TRANSLATE(expr, from_string, to_string) from_string 与 to_string 以字符为单位&#xff0c;对应字符一一替换。 用法示例&#xf…

详解数据结构——二叉排序树

目录 二叉排序树 二叉排序树的查找 二叉排序树的插入 二叉排序树的删除 查找时间效率分析 二叉排序树 二叉排序树&#xff0c;又称二叉查找树&#xff08;BST&#xff0c;Binary Search Tree)一棵二叉树或者是空二叉树&#xff0c;或者是具有如下性质的二叉树: 左子树上所有结…

SpringBoot - SpringBoot整合i18n实现消息国际化

文章目录1. MessageSource源码2. 项目环境搭建1. 创建项目服务auth2. 工具类 I18nUtils3. 自定义异常 CommonException4. 统一异常处理 GlobalExceptionHandler3. 业务实现1. 实体类 UserEntity2. 请求实体 UserQo3. 控制层 UserController4. 业务逻辑层 UserService5. 将异常信…

144. 授人以渔 - 如何查找 SAP UI5 官网上没有提到的控件属性的使用明细

本教程第 113 步骤, SAP UI5 应用开发教程之一百一十三 - 授人以渔 - 如何自行查询任意 SAP UI5 控件属性的文档和技术实现细节我用一整篇文章的篇幅,解答了一位学习者这个疑问: 想请教一下 sap.m.Input 控件中,value里设置的内容,比如path,type,constraints,在哪里可以查…

C++ 多态

目录 一、多态的定义和实现 1.1 多态的构成条件&#xff1a; 1.2 虚函数的重写&#xff08;覆盖&#xff09;&#xff1a; 1.3 多态的两个特殊点&#xff1a; 1.4 析构函数的重写&#xff1a; 1.5 override和final 1.6 重载&#xff0c;重定义&#xff08;隐藏&#xff…