国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

這篇具有很好參考價(jià)值的文章主要介紹了STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482247.html

參考帖子:https://blog.csdn.net/freedompoi/article/details/122350866

目前想要實(shí)現(xiàn)STM32F4自帶的DMA雙緩沖區(qū),嘗試過(guò)一版,結(jié)果不能預(yù)期,就使用了RxHalfCplt和RxCplt去實(shí)現(xiàn)DMA雙緩沖區(qū)的效果。

現(xiàn)在有時(shí)間了,又重新實(shí)現(xiàn)STM32F4自帶的DMA雙緩沖區(qū),作為參考。

?

MCU:STM32F429ZIT6

開(kāi)發(fā)環(huán)境:STM32CubeMX+MDK5

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

此時(shí),雙擊完后會(huì)關(guān)閉此界面,然后打開(kāi)一個(gè)新界面。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

然后,我們開(kāi)始基本配置。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

現(xiàn)在我們選擇一個(gè)LED作為系統(tǒng)LED,該步驟可以忽略,只是本人喜歡這樣子。以硬件原理圖的LD3為例子。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

基本配置除了時(shí)鐘樹(shù)外,基本上已經(jīng)配置好了。

現(xiàn)在配置時(shí)鐘樹(shù)

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

基本配置已經(jīng)配置完,現(xiàn)在開(kāi)始配置實(shí)驗(yàn)使用的內(nèi)容。

配置USART1,打開(kāi)USART中斷。并打開(kāi)DMA。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

配置FreeRTOS

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

配置完成,完善工程,生成工程。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

到此,STM32CubeMX工具的使用結(jié)束!可以發(fā)現(xiàn)在桌面已經(jīng)生成了DMA_DoubleBuf工程。

?

使用MDK5打開(kāi)SDCard_rw工程打開(kāi)。點(diǎn)擊魔法棒,勾選微庫(kù)。選擇對(duì)應(yīng)的下載器,勾選下載完復(fù)位允許。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

在usart.h文件中,加入內(nèi)容。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

 1 /* USER CODE BEGIN Header */
 2 /**
 3   ******************************************************************************
 4   * @file    usart.h
 5   * @brief   This file contains all the function prototypes for
 6   *          the usart.c file
 7   ******************************************************************************
 8   * @attention
 9   *
10   * Copyright (c) 2023 STMicroelectronics.
11   * All rights reserved.
12   *
13   * This software is licensed under terms that can be found in the LICENSE file
14   * in the root directory of this software component.
15   * If no LICENSE file comes with this software, it is provided AS-IS.
16   *
17   ******************************************************************************
18   */
19 /* USER CODE END Header */
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef __USART_H__
22 #define __USART_H__
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "main.h"
30 
31 /* USER CODE BEGIN Includes */
32 #include "cmsis_os.h"
33 #include <semphr.h>
34 /* USER CODE END Includes */
35 
36 extern UART_HandleTypeDef huart1;
37 
38 /* USER CODE BEGIN Private defines */
39 
40 #define UART_BUFF_SIZE  30
41  
42 #pragma pack(4)
43 typedef struct
44 {
45     uint16_t len;
46     uint8_t  data[UART_BUFF_SIZE];
47 }usart_multibuffer_data;
48 #pragma pack()
49 
50 /* USER CODE END Private defines */
51 
52 void MX_USART1_UART_Init(void);
53 
54 /* USER CODE BEGIN Prototypes */
55 void UART_DMA_MultiBuffer(void);
56 /* USER CODE END Prototypes */
57 
58 #ifdef __cplusplus
59 }
60 #endif
61 
62 #endif /* __USART_H__ */

在usart.c文件中,加入內(nèi)容。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

  1 /* USER CODE BEGIN Header */
  2 /**
  3   ******************************************************************************
  4   * @file    usart.c
  5   * @brief   This file provides code for the configuration
  6   *          of the USART instances.
  7   ******************************************************************************
  8   * @attention
  9   *
 10   * Copyright (c) 2023 STMicroelectronics.
 11   * All rights reserved.
 12   *
 13   * This software is licensed under terms that can be found in the LICENSE file
 14   * in the root directory of this software component.
 15   * If no LICENSE file comes with this software, it is provided AS-IS.
 16   *
 17   ******************************************************************************
 18   */
 19 /* USER CODE END Header */
 20 /* Includes ------------------------------------------------------------------*/
 21 #include "usart.h"
 22 
 23 /* USER CODE BEGIN 0 */
 24 QueueHandle_t           queue_mes;  
 25 usart_multibuffer_data     uart_buf[2];
 26 
 27 //DMA 緩存0 傳輸結(jié)束回調(diào)函數(shù)
 28 void DMA_M0_RC_Callback(DMA_HandleTypeDef *hdma)
 29 {
 30     BaseType_t xHigherPriorityTaskWoken; 
 31  
 32     uart_buf[0].len = hdma->Instance->NDTR;
 33     xQueueSendFromISR(queue_mes,&uart_buf[0],&xHigherPriorityTaskWoken);
 34     portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
 35 }
 36  
 37 //DMA 緩存1 傳輸結(jié)束回調(diào)函數(shù)
 38 void DMA_M1_RC_Callback(DMA_HandleTypeDef *hdma)
 39 {
 40     BaseType_t xHigherPriorityTaskWoken; 
 41  
 42     uart_buf[1].len = hdma->Instance->NDTR;
 43     xQueueSendFromISR(queue_mes,&uart_buf[1],&xHigherPriorityTaskWoken);
 44     portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
 45 }
 46  
 47 //DMA 傳輸錯(cuò)誤回調(diào)函數(shù)
 48 void DMA_Error_Callback(DMA_HandleTypeDef *hdma)
 49 {
 50     //里面做一些異常處理
 51 }
 52 /* USER CODE END 0 */
 53 
 54 UART_HandleTypeDef huart1;
 55 DMA_HandleTypeDef hdma_usart1_rx;
 56 
 57 /* USART1 init function */
 58 
 59 void MX_USART1_UART_Init(void)
 60 {
 61 
 62   /* USER CODE BEGIN USART1_Init 0 */
 63 
 64   /* USER CODE END USART1_Init 0 */
 65 
 66   /* USER CODE BEGIN USART1_Init 1 */
 67 
 68   /* USER CODE END USART1_Init 1 */
 69   huart1.Instance = USART1;
 70   huart1.Init.BaudRate = 115200;
 71   huart1.Init.WordLength = UART_WORDLENGTH_8B;
 72   huart1.Init.StopBits = UART_STOPBITS_1;
 73   huart1.Init.Parity = UART_PARITY_NONE;
 74   huart1.Init.Mode = UART_MODE_TX_RX;
 75   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
 76   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
 77   if (HAL_UART_Init(&huart1) != HAL_OK)
 78   {
 79     Error_Handler();
 80   }
 81   /* USER CODE BEGIN USART1_Init 2 */
 82 
 83   /* USER CODE END USART1_Init 2 */
 84 
 85 }
 86 
 87 void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
 88 {
 89 
 90   GPIO_InitTypeDef GPIO_InitStruct = {0};
 91   if(uartHandle->Instance==USART1)
 92   {
 93   /* USER CODE BEGIN USART1_MspInit 0 */
 94 
 95   /* USER CODE END USART1_MspInit 0 */
 96     /* USART1 clock enable */
 97     __HAL_RCC_USART1_CLK_ENABLE();
 98 
 99     __HAL_RCC_GPIOA_CLK_ENABLE();
100     /**USART1 GPIO Configuration
101     PA9     ------> USART1_TX
102     PA10     ------> USART1_RX
103     */
104     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
105     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
106     GPIO_InitStruct.Pull = GPIO_NOPULL;
107     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
108     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
109     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
110 
111     /* USART1 DMA Init */
112     /* USART1_RX Init */
113     hdma_usart1_rx.Instance = DMA2_Stream2;
114     hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4;
115     hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
116     hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
117     hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
118     hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
119     hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
120     hdma_usart1_rx.Init.Mode = DMA_CIRCULAR;
121     hdma_usart1_rx.Init.Priority = DMA_PRIORITY_MEDIUM;
122     hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
123     hdma_usart1_rx.XferCpltCallback = DMA_M0_RC_Callback;
124     hdma_usart1_rx.XferM1CpltCallback = DMA_M1_RC_Callback;
125     hdma_usart1_rx.XferErrorCallback = DMA_Error_Callback;
126     if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
127     {
128       Error_Handler();
129     }
130 
131     __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);
132 
133     /* USART1 interrupt Init */
134     HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
135     HAL_NVIC_EnableIRQ(USART1_IRQn);
136   /* USER CODE BEGIN USART1_MspInit 1 */
137 
138   /* USER CODE END USART1_MspInit 1 */
139   }
140 }
141 
142 void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
143 {
144 
145   if(uartHandle->Instance==USART1)
146   {
147   /* USER CODE BEGIN USART1_MspDeInit 0 */
148 
149   /* USER CODE END USART1_MspDeInit 0 */
150     /* Peripheral clock disable */
151     __HAL_RCC_USART1_CLK_DISABLE();
152 
153     /**USART1 GPIO Configuration
154     PA9     ------> USART1_TX
155     PA10     ------> USART1_RX
156     */
157     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
158 
159     /* USART1 DMA DeInit */
160     HAL_DMA_DeInit(uartHandle->hdmarx);
161 
162     /* USART1 interrupt Deinit */
163     HAL_NVIC_DisableIRQ(USART1_IRQn);
164   /* USER CODE BEGIN USART1_MspDeInit 1 */
165 
166   /* USER CODE END USART1_MspDeInit 1 */
167   }
168 }
169 
170 /* USER CODE BEGIN 1 */
171 //使能DMA
172 void UART_DMA_MultiBuffer(void)
173 {
174     uint32_t u32wk0;
175     
176     SET_BIT(huart1.Instance->CR3,USART_CR3_DMAR);
177     HAL_DMAEx_MultiBufferStart_IT(&hdma_usart1_rx,
178                                   (uint32_t)(&huart1.Instance->DR),
179                                   (uint32_t)&uart_buf[0].data[0],
180                                   (uint32_t)&uart_buf[1].data[0],
181                                    UART_BUFF_SIZE);
182         
183     //這里是解決DMA在啟動(dòng)時(shí),如果接收到大量數(shù)據(jù)會(huì)出現(xiàn)死機(jī)的問(wèn)題
184     u32wk0 = huart1.Instance->SR;  
185     u32wk0 = huart1.Instance->DR;
186     UNUSED(u32wk0);
187 }
188 
189 /* USER CODE END 1 */

在main函數(shù)中,加入內(nèi)容。

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

 1 /**
 2   * @brief  The application entry point.
 3   * @retval int
 4   */
 5 int main(void)
 6 {
 7   /* USER CODE BEGIN 1 */
 8 
 9   /* USER CODE END 1 */
10 
11   /* MCU Configuration--------------------------------------------------------*/
12 
13   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
14   HAL_Init();
15 
16   /* USER CODE BEGIN Init */
17 
18   /* USER CODE END Init */
19 
20   /* Configure the system clock */
21   SystemClock_Config();
22 
23   /* USER CODE BEGIN SysInit */
24 
25   /* USER CODE END SysInit */
26 
27   /* Initialize all configured peripherals */
28   MX_GPIO_Init();
29   MX_DMA_Init();
30   MX_USART1_UART_Init();
31   /* USER CODE BEGIN 2 */
32     queue_mes = xQueueCreate(10, sizeof(usart_multibuffer_data));
33     UART_DMA_MultiBuffer(); 
34   /* USER CODE END 2 */
35 
36   /* Init scheduler */
37   osKernelInitialize();  /* Call init function for freertos objects (in freertos.c) */
38   MX_FREERTOS_Init();
39   /* Start scheduler */
40   osKernelStart();
41 
42   /* We should never get here as control is now taken by the scheduler */
43   /* Infinite loop */
44   /* USER CODE BEGIN WHILE */
45   while (1)
46   {
47     /* USER CODE END WHILE */
48 
49     /* USER CODE BEGIN 3 */
50   }
51   /* USER CODE END 3 */
52 }

在freertos.c文件中

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

 1 extern usart_multibuffer_data uart_buf[2];
 2 extern QueueHandle_t queue_mes;  
 3 usart_multibuffer_data queue_data;
 4 
 5 /* USER CODE BEGIN Header_StartDefaultTask */
 6 /**
 7   * @brief  Function implementing the defaultTask thread.
 8   * @param  argument: Not used
 9   * @retval None
10   */
11 /* USER CODE END Header_StartDefaultTask */
12 void StartDefaultTask(void *argument)
13 {
14   /* USER CODE BEGIN StartDefaultTask */
15     BaseType_t ret = pdFALSE;
16   /* Infinite loop */
17   for(;;)
18   {
19     ret = xQueueReceive(queue_mes,&queue_data,portMAX_DELAY);
20     if(ret == pdTRUE)
21     {
22         HAL_UART_Transmit(&huart1,queue_data.data,queue_data.len,100);
23     }
24   }
25   /* USER CODE END StartDefaultTask */
26 }

?

實(shí)驗(yàn)效果

STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收

?

時(shí)代越來(lái)越好,開(kāi)發(fā)效率越來(lái)越高,希望能幫助到你?。?!

還有就是,開(kāi)源萬(wàn)歲。

?

到了這里,關(guān)于STM32F429 Discovery開(kāi)發(fā)板應(yīng)用:使用FreeRTOS隊(duì)列+DMA雙緩存實(shí)現(xiàn)串口數(shù)據(jù)接收的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32F429移植microPython筆記

    STM32F429移植microPython筆記

    https://micropython.org/download/官網(wǎng) 下載后放在linux中。 解壓命令: 進(jìn)入micropython目錄下,進(jìn)入mpy-cross目錄,先編譯MicroPython cross-compiler,在終端輸入: 進(jìn)入/ports/stm32/boards目錄中,將目錄STM32F429DISC拷貝一份為MY_STM32F429DISC。 然后進(jìn)入MY_STM32F429DISC目錄中修改mpconfigboard.h和stm32f4xx_ha

    2024年02月01日
    瀏覽(21)
  • GD32F470 移植STM32F429工程 Keil調(diào)試筆記

    GD32F470 移植STM32F429工程 Keil調(diào)試筆記

    keil版本:5.25 安裝 GigaDevice.GD32F4xx_DFP.3.0.4.pack Keil.STM32F4xx_DFP.2.15.0.pack 1、原項(xiàng)目為STM32F429 工程,切換到GD32F470 只需在 Options for Target\\\"“對(duì)話框的Device菜單中選中“GD32F470II”,重新編譯即可,一般不會(huì)有編譯錯(cuò)誤。 2、將項(xiàng)目工程在切換回STM32F429,在 Options for Target”\\\"對(duì)話框的D

    2024年02月09日
    瀏覽(24)
  • STM32F103xx / STM32F429VET6最小系統(tǒng)原理圖

    STM32F103xx / STM32F429VET6最小系統(tǒng)原理圖

    STM32F429VET6核心板原理圖 2023.12.09修改內(nèi)容:打板后由于更換學(xué)習(xí)方向并未進(jìn)行測(cè)試,所給原理圖僅供參考,給出PDF下載鏈接,未設(shè)置積分和會(huì)員下載:https://download.csdn.net/download/m0_51294753/88611702。 一、前言 先前使用過(guò)的是STM32F1系列,只使用和繪制過(guò)STM32F103C8T6和STM32F103ZET6的板

    2023年04月24日
    瀏覽(22)
  • STM32F429IGT6使用CubeMX配置SPI通信(W25Q256芯片)

    STM32F429IGT6使用CubeMX配置SPI通信(W25Q256芯片)

    1、硬件電路 需要系統(tǒng)性的看一下W25Q256芯片手冊(cè)? 2、設(shè)置RCC,選擇高速外部時(shí)鐘HSE,時(shí)鐘設(shè)置為180MHz 3、配置SPI 4、生成工程配置 ? 5、讀寫(xiě)流程圖 5、相關(guān)代碼 6、實(shí)驗(yàn)現(xiàn)象 沒(méi)有問(wèn)題!

    2024年02月12日
    瀏覽(41)
  • 【STM32F429】HAL庫(kù)的PWM中斷,精確控制脈沖數(shù),控制步進(jìn)電機(jī)

    【STM32F429】HAL庫(kù)的PWM中斷,精確控制脈沖數(shù),控制步進(jìn)電機(jī)

    這兩天在調(diào)步進(jìn)電機(jī),希望是使得步進(jìn)電機(jī)每次都達(dá)到期望的高度。在查了一天的資料,發(fā)現(xiàn)大部分上傳的資料都是使用CubeMX生成的,可復(fù)制性很高,但未免有失可讀性,故上傳我的心得經(jīng)驗(yàn)。 本來(lái)原子哥的例程里有整合度很高的,已經(jīng)封裝好的精確控制步進(jìn)電機(jī)前進(jìn)距離的

    2024年02月08日
    瀏覽(24)
  • STM32F407 移植 FreeRTOS

    STM32F407 移植 FreeRTOS

    本實(shí)驗(yàn)是基于正點(diǎn)原子 STM32F407ZG 探索者開(kāi)發(fā)板完成的,所以需要一個(gè)STM32F407ZG 探索者開(kāi)發(fā)板 用于移植的基礎(chǔ)工程(下面會(huì)講) FreeRTOS源碼(下面會(huì)講) 本實(shí)驗(yàn)所有用到的代碼:基于正點(diǎn)原子STM32F407的FreeRTOS移植工程.zip 1.1 移植前準(zhǔn)備 1.1.1 基礎(chǔ)工程 由于后續(xù)需要用到 LED、

    2024年02月08日
    瀏覽(28)
  • 搭建STM32F407的Freertos系統(tǒng)(基于STM32CubeMX)

    搭建STM32F407的Freertos系統(tǒng)(基于STM32CubeMX)

    ? ? ? ?本人長(zhǎng)期開(kāi)發(fā)Linux、Windows上應(yīng)用軟件,一直以來(lái)MCU開(kāi)發(fā)有所接觸,但較少(最近項(xiàng)目需要,小公司么,都得會(huì),被逼的),好在有STM32CubeMX這樣工具,貌似就是我想要的工具。 ? ? ? ? 本次demo目標(biāo)立下: ? ? ? ? 1. 搭建或移植FreeRTOS到STM32上,畢竟對(duì)于長(zhǎng)期在Linux環(huán)境

    2024年02月10日
    瀏覽(31)
  • 五、修改官方FreeRTOS例程(STM32F1)

    五、修改官方FreeRTOS例程(STM32F1)

    (1)進(jìn)入FreeRTOS官網(wǎng):FreeRTOS官網(wǎng) (2)下載FreeRTOS。(選擇帶示例的下載) (1)下載后解壓的FreeRTOS文件如下圖所示。 (2)刪除下圖中紅框勾選的文件。 FreeRTOS-Plus,F(xiàn)reeRTOS的生態(tài)文件,非必需的。 tools,這里面是亞馬遜相關(guān)的文件,不需要。 (3)刪除\\\"FreeRTOSv202212.01FreeRTOSDemo\\\"目錄下用不到

    2024年02月11日
    瀏覽(19)
  • FreeRTOS移植STM32超詳細(xì)(以STM32F103ZE為例)

    FreeRTOS移植STM32超詳細(xì)(以STM32F103ZE為例)

    我剛學(xué)FreeROTS時(shí)想移植到STM32,找了網(wǎng)上很多資料,但大多都不是很完整,于是我把我自己的移植過(guò)程分享出來(lái),供大家參考。 我們以STM32F103ZE,正點(diǎn)原子的跑馬燈實(shí)驗(yàn)為例, 準(zhǔn)備工作: 跑馬燈實(shí)驗(yàn)工程 FreeRTOS文件源碼(可在官方下載) ? ? 第一步? 移植文件到工程 首先在工

    2024年02月08日
    瀏覽(21)
  • 【學(xué)習(xí)日記】【FreeRTOS】FreeRTOS 移植到 STM32F103C8

    【學(xué)習(xí)日記】【FreeRTOS】FreeRTOS 移植到 STM32F103C8

    本文基于野火 FreeRTOS 教程,內(nèi)容是關(guān)于 FreeRTOS 官方代碼的移植的注意事項(xiàng),并將野火例程中 STM32F103RC 代碼移植到 STM32F103C8。 兩個(gè)下載鏈接: 官 網(wǎng) 代碼托管 Source:內(nèi)核源碼,我們需要的主要內(nèi)容 根目錄:這里的 C 文件都是由 C 語(yǔ)言編寫(xiě)的,所以在各種單片機(jī)上是通用的

    2024年02月11日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包