一个电子信息工程学生的历程和内心感想
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、我对大学三年专业课程的理解
- 二、我为什么本科选择研究嵌入式这个方向?
- 1.可以把理论变为实际应用——兴趣是最好的老师。
- 2.嵌入式方向可以打的比赛非常多,天然具有竞赛优势
- 三、我对嵌入式方向的感想?
- ①本科阶段很适合,研究生阶段最好接触更前沿的技术
- ②工作党三件套:裸机编程+rtos操作系统+Linux
- 四、对于STM32(库函数版本)的学习,我的经历是:
- 入门阶段:
- 新手阶段:
- 进阶阶段:
- 中级阶段:
- 高级阶段:
- 五、关于嵌入式芯片与系统设计竞赛,我的经验
- ①选对赛道很重要
- ②作品立意和应用前景很重要
- ③勇敢参赛,一定要保证作品完工上交。
- 六、我的下一步打算
- 1.重温C语言和数据结构与算法
- 2.学习C++
- 3.学习Linux的基本知识
- 4.去导师课题组提前开启自己的研0生活
- 七、未完待续
本人来自武汉某工科211,学的是当下最为热门的电子信息专业,其实大学三年,对于电子信息工程来说属实学不够,今年成为大四学长了,也即将保研去西电开启研究生生活。这里想总结一下目前大学三年自己的感想。
一、我对大学三年专业课程的理解
我们学校对于通信工程和电子信息几乎是完全相同的培养方案,所以你在大一大二学到的东西非常杂。我觉得大致有这些细分的方向:
①底层电路设计:电路基础、模电、数电、高频电子线路、电子电工技术
②通信方向:通信原理、信息论与编码、电磁场与电磁波
③信号处理方向:复变函数、信号与系统、数字信号处理、数字图像/音频处理
④嵌入式方向:嵌入式原理(STM32)、嵌入式操作系统、传感器原理
⑤偏软件编程方向:C语言、数据结构与算法、JAVA、C++、计算机网络
我最大的感受是,由于学时以及培养计划的安排,我们被迫的对所有的方向进行了一个极为粗糙的学习,每个学期都会有这5个方向中的某些课程,但是现在回想起来,完全没有形成一个系统,而且仅仅只是对理论知识的学习,我无法去想象这些课程如何应用在实践生产中,所以很难培养出什么兴趣来。
很多人一直诟病的是什么呢?是根本学不深,所谓的万金油其实也意味着没有专精的方向。我在大一大二时只是按部就班的学习这些课程,这学期学完某一课,下一学期又忘了。也许期末考试有个还行的成绩,但是实际上完全没有理解这些课有什么作用。
所以我想表达的一个核心想法就是:尽早确定自己想要细致研究的方向,越早接触应用层面越好,不要只拘束于理论知识。
二、我为什么本科选择研究嵌入式这个方向?
1.可以把理论变为实际应用——兴趣是最好的老师。
我的感受是,传统通信和信号处理方面,大学本科属实接触不到前沿先进的技术,学的教科书是几十年前的知识,基础知识虽然重要但是我没什么深入学习的欲望,这两个方向最好提前找硕导博导,像现在的新型编码技术、5G基站、雷达天线、射频等方向,进他们的实验室课题组,作为本科生打打杂跟着学习,也能接触到一些很前沿的东西,可惜我没有这方面的经历。
嵌入式跟软件编程算是我们本科生就能上手,可以接触前沿技术的领域了。
对于学编程语言,搞前端后端开发,其实很好,但是现在计算机专业尚且卷成麻花,电子信息专业只能说稍微分一杯羹,这方面我只会C,所以就不发表看法了。
嵌入式开发,对于喜欢搞电子产品、做东西、做小车、机器人的,可以把理论变为实际应用,那一定是一个很好的方向。
2.嵌入式方向可以打的比赛非常多,天然具有竞赛优势
我们学校历来具有竞赛保研的传统,学院竞赛氛围非常浓厚。电赛、智能车、机器人大赛、集创赛、嵌入式大赛、机设赛、工巡赛,可以说,本科会熟练使用STM32,就天然的拿到了组队参加这些比赛的门票。而做项目、申请专利、申请大创项目,也都是水到渠成。
三、我对嵌入式方向的感想?
①本科阶段很适合,研究生阶段最好接触更前沿的技术
不是说嵌入式不好,但是目前这个方向就业压力很大,我本科做的项目都很浅显,需要两三年的时间深入学习,并且深深的感觉到嵌入式领域如果能结合研究生的某些专精课题的话,会更有前景。
②工作党三件套:裸机编程+rtos操作系统+Linux
经常看BOSS和猎聘,基本都是这三件套,从简单到困难,我是大三这一年才学完rtos操作系统,幸好保研了有个缓冲时间,否则直接面临找工作的话,自己的技能可能还很不足。
四、对于STM32(库函数版本)的学习,我的经历是:
入门阶段:
①买一块正点原子开发板,有点小贵,但是绝对值得,我的板子陪了我两年都没坏。
②学习正点原子附送的资料,尤其是里面那四五十个实验。
③B站看江科大的教学视频,跟着他学习,不用买他家的套件,用正点原子的板子做是一样的,只不过一些led、蜂鸣器、传感器要另外买。
④安装keil平台,把最基础的一些新建项目、编写代码、编译、烧录下载等操作学会。
⑤点亮第一颗LED,让很多个LED变成流水灯。
⑥注意:不要把那些实验全部学完,你花大量时间看完也不容易理解,把基础的GPIO、TIM、ADC、USART、中断这5个的例程学会就行,这5个我觉得很重要。
新手阶段:
①找一个最简单的综合项目来练手,我的是经典的环境检测,温湿度、空气质量、烟雾浓度、雨水、PH值、酒精浓度等等。
②首先学会在CSDN找相关项目,看一看大家都用的是什么传感器模块,然后去淘宝买这些模块。
③抄(借鉴)各个平台的模块代码,基本都是相通的,然后把这些模块的代码整合一下放keil里面。看不懂背后原理无所谓,主要是了解keil编程的思路。
④看别人写的代码,多看,把基本格式学会,然后就是调函数,改bug报错,编译通过,下载烧录,成功运行。
⑤对于这些环境数值的检测,就会用的很多单片机外设的知识,边看例程就能边理解一些外设的原理了。
进阶阶段:
①会查产品手册,知道哪些引脚具有哪些特定的外设;
②会使用调试手段,利用keil的调试功能打断点、测试运行是否正常
③深入理解内存结构、RAM和ROM、时钟树、定时器、DMA等底层知识
④把一些常用模块玩的清楚。
中级阶段:
①经典上云平台,随便找个云平台,可以实现上报数据和下发指令
②可以实现两个或者多个单片机之间的数据交流
③可以实现F103到F429的各种型号的代码编写
④理解IIC、SPI、CAN、RS485、RS232、wifi、蓝牙的通信原理
高级阶段:
①参加比赛,比赛一般用不到操作系统,一般裸机编程够用。
②做项目,比如我做了智能家居门窗,然后还有六足机器人等
③学习rtos操作系统,这里比较建议freertos和国产的rtthread。
④深入学习数据结构与算法,从内存管理、代码优化、指针的使用等层面优化自己的代码风格,提高代码的效率和稳定性。
五、关于嵌入式芯片与系统设计竞赛,我的经验
这个比赛目前举办了六届,是教育部认可的A类赛事,我觉得在嵌入式芯片应用方面还是很不错的。去年(2022)名气还不算大,今年我参加时已经有了六千多支队伍参赛,说明比赛的名气逐渐打响,而且含金量更高。我们团队也是很荣幸获得了国家级一等奖。
比赛具体的介绍我不细讲了,主要谈谈我的参赛经验:
①选对赛道很重要
因为绝大多数人都是STM32启蒙的,所以ST赛道属实是卷中卷,而其他企业赛道相对来说没那么卷。因此,可以尝试一下一些国产的芯片赛道,需要提前花一点时间去熟悉国产芯片的使用,比如开发平台、编程语言、芯片手册之类的。等上手之后,其实就轻车熟路了,嵌入式开发的本质都是差不多的,只能说对那些外设模块的国产开发平台的移植是比较难的,其他问题不大。
②作品立意和应用前景很重要
根据参加省赛和国赛,评委的一些关注点来看,作品的立意首先要细,要着眼于一些待续解决的实际问题,用我们的一些新点子去尝试解决。另外,作品必须看重能否应用,能否得到市场的良好反应。举个例子,做智能家居,现在市场上这类产品太多了,大学生的智能家居最多就是一个模块的堆砌,没有解决什么社会痛点,除非你的作品真的非常精美无可挑剔。
③勇敢参赛,一定要保证作品完工上交。
比赛周期长,一定要保证最后可以提交作品。抱着拿奖的想法的话,成功提交作品就已经成功了60%,因为会有很多很多组交不了作品。哪怕作品只有一个雏形,或者功能很简单,也要尝试去提交。至于到了区赛国赛,那肯定需要再下功夫去升级作品了。
六、我的下一步打算
1.重温C语言和数据结构与算法
2.学习C++
3.学习Linux的基本知识
4.去导师课题组提前开启自己的研0生活
七、未完待续
相关文章:
一个电子信息工程学生的历程和内心感想
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、我对大学三年专业课程的理解二、我为什么本科选择研究嵌入式这个方向?1.可以把理论变为实际应用——兴趣是最好的老师。2.嵌入式方向可以打的比赛非…...
【zookeeper】zk集群安装与启动踩坑点
zk安装我也踩了一些坑。特别是第一点,zk官网好像都没什么说明,导致直接下错了,搞了好几个小时。 踩坑点如下: 1,在zk官网下载包时,注意3.5以后的版本,要下载带-bin的,3.5之后&…...

【计算机网络】 拥塞控制
文章目录 背景TCP的四种拥塞控制算法慢开始与拥塞避免:快重传:快恢复: 流量控制和拥塞控制本质上的 区别 背景 网络中的链路容量和交换节点中的缓存和处理机都有着工作的极限,当网络的需求超过他们的工作极限时,就出现…...
【react】慎用useLayoutEffect转而使用useEffect
由于useLayoutEffect钩子是在dom获得后、渲染组件前。因此,如果在useLayoutEffect中设置一些长耗时的,或者死循环之类的任务,会导致内存堆栈溢出。这时候需要转用useEffect。 // 适配全局宽度拉动变化时,legend显示数量React.use…...

基于微信小程序的美食推荐系统设计与实现(源码+lw+部署文档+讲解等)
前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…...

laravel框架 - 消息队列如何使用
业务场景:项目里边有很多视频资源需要上传到抖音资源库,通过队列一条一条上传。 参考实例:发送邮件,仅供参考 (1)创建任务【生成任务类】 在你的应用程序中,队列的任务类都默认放在 app/Jobs 目录下。如果这个目录不存…...

Dependency ‘org.redisson:redisson:‘ not found解决方法 三种刷新Maven项目的方法
报错情况 在pom中导入redisson包 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId> </dependency> 爆红,还显示Dependency org.redisson:redisson: not found。 由于报错已经解决,…...

Mysql高级——索引优化和查询优化(1)
索引优化 1. 数据准备 学员表插50万条, 班级表插1万条。 建表 CREATE TABLE class (id INT ( 11 ) NOT NULL AUTO_INCREMENT,className VARCHAR ( 30 ) DEFAULT NULL,address VARCHAR ( 40 ) DEFAULT NULL,monitor INT NULL,PRIMARY KEY ( id ) ) ENGINE INNO…...

Oracle for Windows安装和配置——Oracle for Windows数据库创建及测试
2.2. Oracle for Windows数据库创建及测试 2.2.1. 创建数据库 1)启动数据库创建助手(DBCA) 进入%ORACLE_HOME%\bin\目录并找到“dbca”批处理程序,双击该程序。具体如图2.1.3-1所示。 图2.1.3-1 双击“%ORACLE_HOME%\bin\dbca”…...

【1993. 树上的操作】
来源:力扣(LeetCode) 描述: 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点,所以 par…...

LeetCode【1. 两数之和】
穷通有命无须卜,富贵何时乃济贫;角逐名场今已久,依然一幅旧儒巾。 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输…...

3D成像技术概述
工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。 飞行时间3D成像 飞行时间成像(Time of Flight),简称TOF,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉…...

Centos7 安装部署 Kubernetes(k8s) 高可用集群
1:基础环境准备 宿主机系统集群角色服务器IP主机名称容器centos7.6master192.168.2.150ks-m1dockercentos7.6master192.168.2.151ks-n1dockercentos7.6master192.168.2.152ks-n2docker 1.1 服务器初始化及网络配置 VMware安装Centos7并初始化网络使外部可以访问*…...
c++加速方法大全
我们平常写代码的时候,经常超时,非常难受,所以,我写了这篇文章,让你的代码提升速度(这些方法作者亲测有效,用了这些方法,足足提升了1秒!虽然最后题目还是没过)…...
【国科大卜算】Truck History 最小生成树Prim
Truck History 文章目录 Truck Historyproblem descriptionInputOutputSample个人理解 problem description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for vegetable delivery, other for furniture, or for bricks. The company…...

SQLAlchemy映射表结构和对数据的CRUD
目录 ORM模型映射到数据库中 SQLAlchemy对数据的增删改查操作编辑 构建session对象 添加对象 查找对象 修改对象 删除对象 ORM模型映射到数据库中 用declarative_base根据engine创建一个ORM基类 from sqlalchemy.ext.declarative import declarative_base engine cr…...

Spring boot原理
起步依赖 Maven的传递依赖 自动配置 Springboot的自动配置就是当spring容器启动后,一些配置类、bean对象就自动存入到IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。 自动配置原理: 方案一…...

技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询
引言 PostgreSQL 使用基于消息的协议在前端(客户端)和后端(服务器)之间进行通信。该协议通过 TCP/IP 和 Unix 域套接字支持。 《深度解析 PostgreSQL Protocol v3.0》系列技术贴,将带大家深度了解 PostgreSQL Protoc…...

HDFS编程实践-从HDFS中下载指定文件到本地
前言:Hadoop采用java语言开发,提供了Java Api与HDFS进行交互 先要把hadoop的jar包导入到idea中去 为了能编写一个与hdfs交互的java应用程序,一般需要向java工程中添加以下jar包 1)/usr/local/hadoop/share/hadoop/common目录下…...

安防监控视频AI智能分析网关:人流量统计算法的应用场景汇总
TSINGSEE青犀人流量检测算法是内置在智能分析网关中的一种能够通过AI分析和计算人群数量以及密度的算法技术,在提升城市管理效率、改善用户体验和增加安全性方面发挥着重要作用。人流量检测算法在许多领域都有广泛的应用,如智慧城市、智慧交通、智慧景区…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...