成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
  • 相關推薦
申請入駐 產業(yè)圖譜

利用Deepseek學習嵌入式技術,合適嗎?

02/05 16:00
1940
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

春節(jié)前后,DeepSeek著實火了一把,朋友圈也是刷爆了(不知道你朋友圈有沒有關于Deepseek的消息?)。

以前,我習慣性用百度/谷歌搜索問題,但是,自ChatGPT出來,我就不再依賴百度/谷歌了(當然,很多時候也會用)。

國內外這種 AI 工具有很多,特別是國內涌現出了一大批類似 AI 工具,像:文心一言、Kimi、豆包、通義千問、訊飛星火等??赡苡行┤藳]有梯子,國外ChatGPT這類工具沒辦法使用,國內這些工具就是首選。

國內的 AI 工具確實很多,但在 DeepSeek 問世之前,國內的這些工具,說實話,和 ChatGPT 還是有一定差距,用來問些嵌入式技術相關的問題,出來的答案,總有一股“AI味”

在春節(jié)假期,我也試著在?DeepSeek 上問了一些嵌入式相關的問題,給出的答案,會明顯的比國內其他工具要好的多。那么,利用Deepseek學習嵌入式技術,合適嗎?

我的答案是:合適。

比如問:學習嵌入式的路線

像這類指導性的問題,它給的答案雖然和文心一言、Kimi回答有點類似,但它還給出了“拓展的內容”。當然,這類問題,DeepSeek優(yōu)勢不明顯。

再來一個問題:基于單片機以及RTOS寫一段串口收發(fā)的代碼,其中包含通信協(xié)議,這個問題,DeepSeek給出的答案就相對更有優(yōu)勢:

代碼實現:

#include "stm32f4xx.h"#include "FreeRTOS.h"#include "task.h"#include "queue.h"#include "usart.h"
#define START_BYTE 0xAA#define UART_RX_QUEUE_SIZE 128#define UART_TX_QUEUE_SIZE 128
QueueHandle_t uart_rx_queue;QueueHandle_t uart_tx_queue;
typedef struct {    uint8_t length;    uint8_t data[256];    uint8_t checksum;} uart_frame_t;
void uart_rx_task(void *pvParameters) {    uint8_t rx_byte;    uart_frame_t rx_frame;    uint8_t state = 0;    uint8_t index = 0;    uint8_t checksum = 0;
    while (1) {        if (xQueueReceive(uart_rx_queue, &rx_byte, portMAX_DELAY) == pdPASS) {            switch (state) {                case 0: // 等待起始字節(jié)                    if (rx_byte == START_BYTE) {                        state = 1;                    }                    break;
                case 1: // 讀取長度                    rx_frame.length = rx_byte;                    checksum = rx_byte;                    state = 2;                    index = 0;                    break;
                case 2: // 讀取數據                    rx_frame.data[index++] = rx_byte;                    checksum += rx_byte;                    if (index >= rx_frame.length) {                        state = 3;                    }                    break;
                case 3: // 讀取校驗和                    rx_frame.checksum = rx_byte;                    if (checksum == rx_frame.checksum) {                        // 校驗成功,處理數據                        process_rx_frame(&rx_frame);                    }                    state = 0;                    break;
                default:                    state = 0;                    break;            }        }    }}
void uart_tx_task(void *pvParameters) {    uart_frame_t tx_frame;
    while (1) {        if (xQueueReceive(uart_tx_queue, &tx_frame, portMAX_DELAY) == pdPASS) {            // 發(fā)送起始字節(jié)            USART_SendData(USART1, START_BYTE);            while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
            // 發(fā)送長度            USART_SendData(USART1, tx_frame.length);            while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
            // 發(fā)送數據            for (uint8_t i = 0; i < tx_frame.length; i++) {                USART_SendData(USART1, tx_frame.data[i]);                while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);            }
            // 計算并發(fā)送校驗和            uint8_t checksum = tx_frame.length;            for (uint8_t i = 0; i < tx_frame.length; i++) {                checksum += tx_frame.data[i];            }            USART_SendData(USART1, checksum);            while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);        }    }}
void process_rx_frame(uart_frame_t *frame) {    // 在這里處理接收到的數據幀    // 例如:打印數據、響應命令等}
void USART1_IRQHandler(void) {    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {        uint8_t rx_byte = USART_ReceiveData(USART1);        xQueueSendFromISR(uart_rx_queue, &rx_byte, NULL);    }}
int main(void) {    // 初始化硬件和外設    USART_Init();    NVIC_Init();
    // 創(chuàng)建隊列    uart_rx_queue = xQueueCreate(UART_RX_QUEUE_SIZE, sizeof(uint8_t));    uart_tx_queue = xQueueCreate(UART_TX_QUEUE_SIZE, sizeof(uart_frame_t));
    // 創(chuàng)建任務    xTaskCreate(uart_rx_task, "UART_RX", configMINIMAL_STACK_SIZE, NULL, 1, NULL);    xTaskCreate(uart_tx_task, "UART_TX", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    // 啟動調度器    vTaskStartScheduler();
    while (1);}

 

同樣的問題,DeepSeek和國內其他AI工具給出的答案可能近似,但DeepSeek會列舉得更詳細,而且更具有可讀性。

就好比一段代碼,實現的功能相同,但你的代碼像一坨屎,而DeepSeek的代碼規(guī)范完整,而且可讀性、可移植性更好。

當然,以上只列舉了其中一兩點,我也嘗試問了很多類似的問題,并進行對比,如果說滿分100分,國內其他AI工具(文心一言、Kimi)有80分,那么,DeepSeek我給90分。

DeepSeek讓特朗普都站出來說了話,讓央視新聞等國內幾家頭部媒體都進行了報道,說明DeepSeek確實有兩把刷子。當然,從使用者的角度,DeepSeek也確實很不錯。

最后,你們用上了 DeepSeek 嗎?

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

作者黃工,從事嵌入式軟件開發(fā)工作8年有余,高級嵌入式軟件工程師,業(yè)余維護公眾號『strongerHuang』,分享嵌入式軟硬件、單片機、物聯(lián)網等內容。

达日县| 色达县| 海盐县| 锡林浩特市| 泰安市| 锡林浩特市| 德庆县| 白河县| 双辽市| 黄龙县| 乌苏市| 松桃| 莒南县| 仙桃市| 资兴市| 沈阳市| 军事| 乐昌市| 佛坪县| 罗城| 平远县| 通道| 灵武市| 铜鼓县| 临湘市| 孟州市| 怀安县| 江西省| 北辰区| 无极县| 青龙| 浦北县| 吉安市| 双牌县| 大英县| 德阳市| 吉安县| 济阳县| 民和| 磐石市| 德保县|