如何当好硬软件助理工程师——实习周报
如何当好硬软件助理工程师——实习周报(一)
文章目录
- 如何当好硬软件助理工程师——实习周报
- 前言
- 一、问题积累
- 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.点击仓库右上角的克隆即可得到链接地址
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我的速度快,就还能留在公司混一混。