日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一份无锡工程师的分享

發布時間:2023/12/18 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一份无锡工程师的分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自我介紹哦!

你好,我叫***,今~~ 年24歲畢業于黃河科技學院測控技術與儀器專業,我的工作經驗是從去年的暑假開始,到今年7月份,主要做過的項目有阿里云遠程室內環境檢測及智能語音控制系統主要用于各個房間的信息采集和顯示還有就是燈啊繼電器的控制,智能手環主要是血壓測量,心率,計步,還有溫濕度的測量,以及藍牙傳輸

為什么離職 離職的原因

我認為我已經具備了一定的經驗積累和能力素養希望可以加入到具有創新和挑戰的團隊中,繼續深扎業務,發揮自己的優勢。

自己的職業規劃 往哪個行業深入發展,還是都試一下

短期內做好自己的本職工作,適應公司節奏,打好基礎,未來3到5年內我希望自己能在自己的專業領域內有所創新和突破。
有其他offer
我剛開始,看機會時間不長目前有一兩個

嵌入式主要講的什么

嵌入式技術與應用主要研究嵌入式技術、嵌入式產品軟件開發等方面基本知識和技能,進行嵌入式產品生產、管理、售后維護等。例如:高清電視(HDTV)、路由器、汽車電子等嵌入式技術應用開發
一個計算機系統有哪些單元模塊組成
一臺能夠工作的 計算機 要有這樣幾個部份構成: CPU (進行運算、控制)、 RAM (數據存儲)、 ROM (程序存儲)、輸入/輸出設備(例如:串行口、并行輸出口等)總線又分為數據總線、地址總線和控制總線3種。

C語言

MCU最小系統是什么
電源部分、晶振部分、復位部分
C代碼中為什么分.C .H
這樣做目的是為了實現軟件的模塊化
使軟件結構清晰,而且也便于別人使用你寫的程序
sizeof和strlen的區別
sizeof是一個操作符,而strlen是庫函數。
?sizeof的參數可以是數據的類型,也可以是變量,而strlen只能以結尾為’\0’的字符串作參數。
?編譯器在編譯時就計算出了sizeof的結果,而strlen必須在運行時才能計算出來。
?sizeof計算數據類型占內存的大小,strlen計算字符串實際長度。
結構體和聯合體

?結構體struct

? 各成員各自擁有自己的內存,各自使用互不干涉,同時存在的,遵循內存對齊原則。一個struct變量的總長度等于所有成員的長度之和。
?聯合體union
? 各成員共用一塊內存空間,并且同時只有一個成員可以得到這塊內存的使用權(對該內存的讀寫),各變量共用一個內存首地址。因而,聯合體比結構體更節約內存。一個union變量的總長度至少能容納最大的成員變量,而且要滿足是所有成員變量類型大小的整數倍。不允許對聯合體變量名U2直接賦值或其他操作。
static有什么用,用在局部變量里是干什么的,static會放在程序的哪個部分,為什么生命周期作用時間會變緩
1.static的作用 (1) 修飾局部變量時,只初始化一次,延長了局部變量生命周期,直到程序結束才釋放。 (2)修飾全局變量,全局變量智能在本文件訪問,不能在其他文件訪問。靜態存儲區
一般函數里面的局部變量生命周期到什么時候為止
函數調用結束后

Static用于函數的時候有什么效果

static 的最主要功能是隱藏,其次因為 static 變量存放在靜態存儲區,所以它具備持久性和默認值0。
Const關鍵詞、
關鍵字const用來定義只讀變量,被const定義的變量它的值是不允許改變的,即不允許給它重新賦值,即使是賦相同的值也不可以。 所以說它定義的是只讀變量,這也就意味著必須在定義的時候就給它賦初值。
const表示(運行時)常量語義:被const修飾的對象在所在的作用域無法進行修改操作,編譯器對于試圖直接修改const對象的表達式會產生編譯錯誤。 volatile表示“易變的”,即在運行期對象可能在當前程序上下文的控制流以外被修改(例如多線程中被其它線程修改;對象所在的存儲器可能被多個硬件設備隨機修改等情況):被volatile修飾的對象,編譯器不會對這個對象的操作進行優化。

一級指針二級指針

一級指針就是指指針,就是內存地址,二級指針就是指向指針的指針,就是地址的地址(這個可以指的是取得所謂的指向的該位置的內容)
數組指針與指針數組的區別
指針數組:首先它是一個數組,數組的元素都是指針,數組占多少個字節由數組本身的大小決定,每一個元素都是一個指針,在32 位系統下任何類型的指針永遠是占4 個字節。它是“儲存指針的數組”的簡稱。
數組指針:首先它是一個指針,它指向一個數組。在32 位系統下任何類型的指針永遠是占4 個字節,至于它指向的數組占多少字節,不知道,具體要看數組大小。它是“指向數組的指針”的簡稱。
數組和鏈表有什么區別

數組

數組是一組具有相同數據類型的變量的集合,這些變量稱之為集合的元素
每個元素都有一個編號,稱之為下標,可以通過下標來區別并訪問數組元素,數組元素的個數叫做數據的長度

一、數組的特點

1.在內存中,數組是一塊連續的區域
2.數組需要預留空間
在使用前需要提前申請所占內存的大小,這樣不知道需要多大的空間,就預先申請可能會浪費內存空間,即數組空間利用率低
ps:數組的空間在編譯階段就需要進行確定,所以需要提前給出數組空間的大小(在運行階段是不允許改變的)
3.在數組起始位置處,插入數據和刪除數據效率低。
插入數據時,待插入位置的的元素和它后面的所有元素都需要向后搬移
刪除數據時,待刪除位置后面的所有元素都需要向前搬移
4.隨機訪問效率很高,時間復雜度可以達到O(1)
因為數組的內存是連續的,想要訪問那個元素,直接從數組的首地址處向后偏移就可以訪問到了
5.數組開辟的空間,在不夠使用的時候需要擴容,擴容的話,就會涉及到需要把舊數組中的所有元素向新數組中搬移
6.數組的空間是從棧分配的

二、數組的優點

隨機訪問性強,查找速度快,時間復雜度為O(1)

三、數組的缺點

1.頭插和頭刪的效率低,時間復雜度為O(N)
2.空間利用率不高
3.內存空間要求高,必須有足夠的連續的內存空間
4.數組空間的大小固定,不能動態拓展
鏈表
鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的
鏈表的特性是在中間任意位置插入和刪除元素都非常快,不需要移動其它元素
對于單向鏈表而言,鏈表中的每一個元素都要保存一個指向下一個元素的指針
對于雙向鏈表而言,鏈表中的每個元素既要保存指向下一個元素的指針,又要保存指向上一個元素的指針
對于雙向循環鏈表而言,鏈表中的最后一個元素保存一個指向第一個元素的指針

一、鏈表的特點

1.在內存中,元素的空間可以在任意地方,空間是分散的,不需要連續
2.鏈表中的元素都會兩個屬性,一個是元素的值,另一個是指針,此指針標記了下一個元素的地址
每一個數據都會保存下一個數據的內存的地址,通過此地址可以找到下一個數據
3.查找數據時效率低,時間復雜度為O(N)
因為鏈表的空間是分散的,所以不具有隨機訪問性,如要需要訪問某個位置的數據,需要從第一個數據開始找起,依次往后遍歷,直到找到待查詢的位置,故可能在查找某個元素時,時間復雜度達到O(N)
4.空間不需要提前指定大小,是動態申請的,根據需求動態的申請和刪除內存空間,擴展方便,故空間的利用率較高
5.任意位置插入元素和刪除元素效率較高,時間復雜度為O(1)
6.鏈表的空間是從堆中分配的

二、鏈表的優點

1.任意位置插入元素和刪除元素的速度快,時間復雜度為O(1)
2.內存利用率高,不會浪費內存
3.鏈表的空間大小不固定,可以動態拓展

三、鏈表的缺點

隨機訪問效率低,時間復雜度為0(N)

對于想要快速訪問數據,不經常有插入和刪除元素的時候,選擇數組
對于需要經常的插入和刪除元素,而對訪問元素時的效率沒有很高要求的話,選擇鏈表
指針 uint ulong他們在32位和64位系統中的數據長度是多少

GPIO一般是做什么的,配置什么

GPIO(general purpose intput output)是通用輸入輸出端口的簡稱,可以通過軟件來控制其輸入和輸出。51 單片機芯片的 GPIO 引腳與外部設備連接起來,從而實現與外部通訊、 控制以及數據采集的功能。過 GPIO 最簡單的應用還屬點亮 LED 燈了,只需通過軟件控制 GPIO 輸出高低電平即可。當然GPIO 還可以作為輸入控制,比如在引腳上接入一個按鍵,通過電平的高低判斷按鍵是否按下
看門狗
是一個定時器電路,一般有一個輸入,叫喂狗,一個輸出到MCU的RST端,MCU正常工作的時候,每隔一端時間輸出一個信號到喂狗端,給WDT清零,如果超過規定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就回給出一個復位信號到MCU,是MCU復位.防止MCU死機.看門狗的作用就是防止程序發生死循環,或者說程序跑飛。
*工作原理: *在系統運行以后也就啟動了看門狗的計數器,看門狗就開始自動計數,如果到了一定的時間還不去清看門狗,那么看門狗計數器就會溢出從而引起看門狗中斷,造成系統復位。所以在使用有看門狗的芯片時要注意清看門狗。
除了單片機有用過其他的帶系統的平臺,應用部分還是驅動部分
TCP/IP 套接字,服務端和客戶端的流程是怎么樣的,服務端調用那些函數,什么過程

TCP協議:

TCP協議是在通信的兩臺設備之間建立連接通道,對傳輸的數據大小沒有限制,但是因為建立了連接,相對可靠一些,但是速度會慢一些。TCP協議又稱為三次握手–四次揮手協議,因為建立過程有三步(發送請求、獲取 反饋、建立連接)。通常情況下,我們的藍牙通信、打電話都是使用的 TCP 協議。

UPD協議:

UDP協議需要將數據打包,因為包有大小,所以對數據大小是有限制的,UDP是不用建立連接的,但不保證待接收方一定會接收到消息,所以不可靠。但是,因為不用建立連接,因此速度要快一些。通常情況下,我們發送短信都是使用的 UDP 協議。

TCP協議通訊的基本流程: 服務器端:調用bind 、 listen

1 創建socket對象 2使用bind()綁定主機號host和端口號port 3使用listen()監聽 4使用accept()被動連接
5 使用send()/rece() 發送/接收數據
客戶端:調用connect
1創建socket對象 2使用connect連接到服務器端 3使用send()/recv() 發送/接收數據 4關閉socket對象

Linux

Makefile
1目標:依賴文件 2$^ 代表所有依賴文件3 @代表所有目標文件4@ 代表所有目標文件 4@代表所有目標文件4< 代表第一個依賴文件 5% 代表通配符 6@指令:屏蔽指令 7定義變量(變量大寫) 8變量名=值1 值2 … 9使用變量 $(變量名)
linux 配置文件修改后立即生效命令# source /etc/profile看版本號Cat /proc/version看系統環境變量env
重定向echo

進程和線程的區別

一個進程可以只有一個線程,也就是主線程,一個進程可以有一個主線程和很多個子線程。
區別:一個程序至少有一個進程,而一個進程至少有一個線程。一個應用程序可以同時啟動多個進程。例如對于IE瀏覽器,每打開一個IE瀏覽器,就啟動了一個新的進程。而線程則是指進程中的一個執行流程,一個進程可以有多個線程,每個線程分別執行不同的任務,當進程內的多個線程同時運行時,這種運行方式就被成為并發運行。
另外,線程和進程還有一個非常重要的區別:每個進程在執行過程中都擁有獨立的內存單元,而同一個進程中的多個線程則共享內存。
多進程多線程
在同一個時間里,同一個計算機系統中如果允許兩個或兩個以上的進程處于運行狀態,這便是多進程,也稱多任務。現代的操作系統幾乎都是多任務操作系統,能夠同時管理多個進程的運行。
多線程是一種執行模型,它允許多個線程存在于進程的上下文中,以便它們獨立執行但共享其進程資源。

3 線程與進程的區別和聯系? 線程是否具有相同的堆棧?

進程是死的,只是一些資源的集合,真正的程序執行都是線程來完成的,程序啟動的時候操作系統就幫你創建了一個主線程。每個線程有自己的堆棧。
進程和線程在多核cpu,多cpu中的運行關系
操作系統會拆分CPU為一段段時間的運行片,輪流分配給不同的程序。對于多cpu,多個進程可以并行在多個cpu中計算,當然也會存在進程切換;對于單cpu,多個進程在這個單cpu中是并發運行,根據時間片讀取上下文+執行程序+保存上下文。同一個進程同一時間段只能在一個cpu中運行,如果進程數小于cpu數,那么未使用的cpu將會空閑。
多線程的概念主要有兩種:一種是用戶態多線程;一種是內核態多線程,對于內核態多線程(java1.2之后用內核級線程),在操作系統內核的支持下可以在多核下并行運行;
對于多核cpu,進程中的多線程并行執行。對于單核cpu,多線程在單cpu中并發執行,根據時間片切換線程。同一個線程同一時間段只能在一個cpu內核中運行,如果線程數小于cpu內核數,那么將有多余的內核空閑。
大小端和轉字節序
大端模式是指高字節數據存放在低地址處,低字節數據放在高地址處。
小端模式是指低字節數據存放在低地址處,高字節數據放在高地址處。
硬件
AD軟件 原理圖到PCB的流程  
導入機構圖 → 設置邊框 → 設置層疊 → 設置約束規則 → 布局 → 打孔走線 → 覆銅 → 加光學定位點 → 防焊開窗 → 放絲印 → 導文件 PCB繪制時布局和走線還有很多細節和要求需要根據具體的情況來看 
給你一個不知道有沒有問題的開發板首先你會怎么做,步驟是什么
先上電 看看芯片有沒有問題。 直接上手摸一下燙不燙 沒問題的話就檢查其他部分電路是不是正常。 供電沒問題的話就點個燈。
智能手環stm32f411ceuxflash是512KB RAM是128KB最高主頻168MHz 因為系統初始化SystemInit函數里初始化APB1總線時鐘為4分頻即42M,APB2總線時鐘為2分頻即84M 智能家居STM32F103RCT6flash是256KB RAM是48KB最高主頻72MHz 72M- 系統時鐘 = SYCCLK = AHB1 = 168MHz
-APB2 = 72MHz
-APB1 = 36MHz

做項目的成員

在項目里承擔什么角色 嵌入式軟件工程師 小組里的項目崗位的分配 項目組長負責干嘛
OLED 模塊買的那家公司的 全視科技公司
用哪個口操作的(怎么操作OLED模塊的)操作的總線用的哪個
OLED OLED_D/C PA 15 OLED_CS PB7 OLED_RES PB13 通用功能 OLED_SCL PB3 OLED_SI PB5 復用功能 用SPI1總線操作
MPU6050是干什么的    后期的算法  從哪個平臺上移植的官方的還是第三方廠家
手環的界面有多少頁
藍牙用的是模組還是芯片   怎把單片機的數據通過藍牙發送出去的

IIC和SPI有什么區別

因為SPI是全雙工,IIC的不是。 SPI沒有定義速度限制,一般的實現通常能達到甚至超過10 Mbps。 IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式還需要額外的I/O緩沖區,還并不是總是容易實現的。
IIC的兩根線都有什么作用 假設掛了3個IIC的片子,他們是怎么進行主網通信的
IIC串行總線一般有兩根信號線,一根是雙向的數據線SDA,另一根是時鐘線SCL。 所有接到I2C總線設備上的串行數據SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上,一般SDA、SCL都會接上拉電阻實現電平的轉換以及提高驅動能力。
方法一:(內置了兩種地址的模塊)
對于內置了兩種地址的模塊,可以通過對某個引腳置高或置低來選擇其中一個地址,現假設置高為A,置低為B。
假設你有三個模塊要同時通信,首先將模塊1置高,模塊2、模塊3的地址選擇口置低,這樣僅有模塊1在地址A,然后對地址A進行通信即可防止其他模塊干擾。接下來將模塊1置低,模塊2置高,即可對模塊2通信。循環下去即可實現同時對三個模塊通信。
方法二:(具有使能端的模塊)
若你手中的模塊某個引腳必須拉低或拉高才能正常使用,那么仿照方法一,對其中一個使能,其他均處于非使能狀態,如此便可以僅對其中一個模塊通信咯。

IIC在項目里用的哪個功能里(什么作用)傳輸的什么數據 什么外設 通訊速率是多少

100kb/s、300kb/s、3.4Mkb/s由IIC地址決定,8位地址,減去1位廣播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127個地址, 所以理論上可以掛127個從器件。IIC協議沒有規定總線上device最大數目,但是規定了總線電容不能超過400pF。管腳都是有輸入電容的,PCB上也會有寄生電容,所以會有一個限制。實際設計中經驗值大概是不超過8個器件。

USART和RS485有啥區別

uart、IIC、SPI都是一種具有協議特征的收發器、接口、總線,它規定數據按照什么的時序傳輸,rs232,、rs485是傳輸時候的電平標準,規定了按照上述協議傳輸的高電平與低電平的電壓都應該是多少;uart還是一種硬件,是個收發器,發送和接收,是個設備,是完成特定功能的硬件,它本身并不是協議,它本身是硬件設備,但它具有協議特征,意思是運用uart收發器進行數據的收發必須按照uart協議的時序進行收發,比如可以在uart的發送端(TXD)發送信號然后通過電平轉換芯片轉換為RS232/R485邏輯電平在發送線上傳輸,再通過電平轉換芯片讓接收端按照時序接收。
RS232與RS485一般都默認跑的UART協議。以UART協議(時序)通過UART收發器的收發端(硬件設備)使用RS232/RS485電平標準進行數據得傳輸
簡單介紹一下你對Lora模塊的理解 有啥特點

Lora 高位地址+低位地址+信道+用戶數據

lora模塊是LPWAN通信技術中的一種,一種基于擴頻技術的超遠距離無線傳輸方案。目前全球免費頻段有,433、868、915MHz等。lora通信技術最大特點,靈敏度高、傳輸距離遠、工作功耗低、組網節點多等特點。主要應用于物聯網行業,如無線抄表(電表/水表)、工業自動控制、環境監測、環保監測等。
首先是傳輸距離,和平常普通的模塊一樣,采用lora擴頻技術,3~8km的傳輸距離,但是傳輸方式上卻有獨特的特點,該模塊可選用3種通信模式,分為低功耗優先模式、均衡模式、距離優先模式,也就是說需要低功耗的,傳輸距離不遠的可以采用第一種,那樣功耗會很低。其他的模式也是同一個道理。詳細可參見下圖;-‘
然后是該lora模塊的一個網關特點,該lora模塊可以GPRS、3G、4G網絡,NB-IOT(物聯網專網),進行組網,可能有人會問,為啥不直接用gprs或者4G傳輸數據呢?因為不是所有地方都有信號,而且信號也很好,所以該功能主要針對,無信號或信號不好,然而數據需要傳公網上服務器的,比如一些油井,偏遠山區,加油站等。可以使用這種特有的lora網關進行數據傳輸。
并且無需用戶建立數據中心,不用關心協議,即可實現設備到設備(不同種類設備也可通信),設備要平臺之間的數據通信。
BH1750是干啥用的BH1750FVI是一款數字型光強度傳感器集成芯片

Esp8266是怎么用的其他的通信流程時怎么樣的,怎么樣與阿里云進行通信的過程 通信的過程是怎樣的模式

ESP8266是一款超低功耗的UART-WiFi 透傳模塊,專為移動設備和物聯網應用設計,可將用戶的物理設備連接到Wi-Fi 無線網絡上,進行互聯網或局域網通信,實現聯網功能
簡單介紹一下Free RTOS是怎么理解的  任務是怎么調度的 怎么切換的
一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。通信方式有:消息隊列、信號量、互斥鎖(互斥信號量)、事件標志組以及任務通知等。
任務切換具體過程
? 搶占式調度
每個任務都有不同的優先級,任務會一直運行直到被高優先級任務搶占或者遇到阻塞式的 API 函數,比如 vTaskDelay。
? 時間片調度
每個任務都有相同的優先級,任務會運行固定的時間片個數或者遇到阻塞式的 API 函數,比如vTaskDelay,才會執行同優先級任務之間的任務切換。
如果用戶在 FreeRTOS 的配置文件 FreeRTOSConfig.h 中禁止使用時間片調度, 那么每個任務必須配置不同的優先級。當 FreeRTOS 多任務啟動執行后,基本會按照如下的方式去執行:
假設現在有兩個任務task1,task2
? 首先執行的最高優先級的任務 Task1, Task1 會一直運行直到遇到 系統阻塞式的 API 函數,比如延遲,事件標志等待,信號量等待, Task1 任務會被掛起,也就是釋放 CPU 的執行權,讓低優先級的任務得到執行。

? FreeRTOS 操作系統繼續執行任務就緒列表中下一個最高優先級的任務 Task2,Task2 執行過程中有兩種情況:

Task1由于 延遲時間到, 接收到信號量消息 等方面的原因, 使得 Task1從掛起狀態恢復到就緒態,在搶占式調度器的作用下,Task2 的執行會被 Task1 搶占。
Task2 會一直運行直到遇到系統阻塞式的 API 函數,比如延遲,事件標志等待,信號量等待, Task2任務會被掛起,繼而執行就緒列表中下一個最高優先級的任務。
? 如果用戶創建了多個任務并且采用搶占式調度器的話,基本都是按照上面兩條來執行。 根據搶占式調度器,當前的任務要么被高優先級任務搶占,要么通過調用阻塞式 API 來釋放 CPU 使用權讓低優先級任務執行,沒有用戶任務執行時就執行空閑任務。
簡單介紹一下MQTT  有什么特點  項目中是怎么用的
是一種基于發布/訂閱(publish/subscribe)模式的輕量級協議,該協議構建于TCP/IP協議之上,MQTT最大優點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用等方面有較廣泛的應用。MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。
MQTT協議 :固定報頭,剩余長度,報文標識符,有效載荷

阿里云,一般是:

  • 設備通過物模型上報數據屬性
  • App通過云端API獲取設備的數據屬性
  • App通過云端API調用設備的服務,來控制設備執行各種命令 一般都是設備和App的互動,有沒有涉及到網絡驅動層次的一些調試單片機程序編寫完后有哪些段 代碼段 數據段 bss段
  • 總結

    以上是生活随笔為你收集整理的一份无锡工程师的分享的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。