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


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

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


    文章目录

    • 如何当好硬软件助理工程师——实习周报
    • 前言
    • 一、问题积累
      • 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) //创建本地分支
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    对应操作截图:
    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
    
    • 1

    再push

    git push -u origin master
    
    • 1

    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)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    b.flash配置

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

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

    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 ++;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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 ++;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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;
    //并非完整例程,请自行查阅资料
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    对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我的速度快,就还能留在公司混一混。

  • 相关阅读:
    react+umi项目中引入antd组件报错:“Button”不能用作 JSX 组件解决方案
    大数据平台搭建2024(一)
    行测-图形推理-8-图群类
    第十章《日期与时间》第7节:ZonedDateTime与OffsetDateTime
    [附源码]Python计算机毕业设计Django咖啡销售平台
    2022百度之星初赛第三场--字符计数
    Git 的基本概念和使用方式
    如何有效对直流列头柜进行监测
    MFC Windows 程序设计[329]之多彩下拉组合编辑框实例(附源码)
    【学习教程】MCM箱模型建模方法及大气O3来源解析实践技术应用
  • 原文地址:https://blog.csdn.net/qq_56225568/article/details/127583397