0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【CW32移植Free-RTOS】CW32開發(fā)者扶持計劃

二進(jìn)制譯碼器 ? 2023-04-18 09:38 ? 次閱讀

前言

1,Free-RTOS源碼下載

  • 下載解壓后檢查文件是否齊全
  • 一定要有這個文件,后面的移植也主要用到這個文件

  • 進(jìn)去后會有四個文件夾,案例,庫,源文件,測試文件

2,建立文件夾

  • 文件夾新建在你的工程里,與User同級
  • 新建一個RTOS文件夾,并添加 include protable source

3,copy系統(tǒng)源碼進(jìn)入新建的工程文件

  • 一,FreeRTOS\\Source\\include :這個文件路徑里的所有 .h 文件復(fù)制進(jìn) 新建的include文件夾中。**

  • 二,FreeRTOS\\Demo 這個路徑中尋找到關(guān)于STM32F1 系列的 Keil文件 。

  • 三,在該路徑中尋找到FreeRTOSConfig.h的文件,并將他復(fù)制進(jìn)之前新建的include的文件夾中

  • 四,FreeRTOS\\Source\\portable\\MemMang 路徑下尋找到heap文件,并將?全部復(fù)制進(jìn) 新建的peotable文件中

  • 五, reeRTOS\\Source\\portable\\RVDS\\ARM_CM0 該路徑下尋找到port文件,復(fù)制進(jìn)新建的portble文件中

  • 六, 將在該路徑下出現(xiàn)的 .c文件都移動進(jìn)新建source文件夾內(nèi)。

    移動后的效果

4,Keil的工程配置

  • 下面是需要新建的組,以及添加的文件
  • RTOS/source
  • RTOS/port

5,添加工程路徑

  • 選擇將 RTOS下的source路徑添加入內(nèi)。

6,修改RTOS配置

#define INCLUDE_xTaskGetCurrentTaskHandle 1

#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler	SVC_Handler
//#define	xPortSysTickHandler	SysTick_Handler



#define configUSE_PREEMPTION		1
#define configUSE_IDLE_HOOK			0
#define configUSE_TICK_HOOK			0
#define configCPU_CLOCK_HZ			( ( unsigned long ) 48000000 )	
#define configTICK_RATE_HZ			( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES		( 5 )
#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE		( ( size_t ) ( 4 * 1024 ) )
#define configMAX_TASK_NAME_LEN		( 16 )
#define configUSE_TRACE_FACILITY	0
#define configUSE_16_BIT_TICKS		0
#define configIDLE_SHOULD_YIELD		1
  • 在中斷文件interrupt_cw32f030.c 內(nèi)屏蔽以下函數(shù),并添加:頭文件
#include "main.h"
#include "interrupts_cw32f030.h"
#include "cw32f030_gpio.h"
#include "cw32f030_adc.h"
#include "cw32f030_gtim.h"
#include "FreeRTOS.h"
#include "task.h"
  • SysTick_Handler(void)
void SysTick_Handler(void)
{
	#if (INCLUDE_xTaskGetSchedulerState)
		if(xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
		{
	#endif 
			xPortSysTickHandler();
	#if (INCLUDE_xTaskGetSchedulerState)
		}
		#endif
}
  • 屏蔽以下兩個函數(shù)

7,測試代碼

注意:因為CW32F030.h內(nèi)可以沒有包含管腳等的.h文件 ,因此新建了一個mian.h 文件

  • **文件main.h**
#ifndef __MAIN_H
#define __MAIN_H


#include "base_types.h"
#include "cw32f030.h"
#include "system_cw32f030.h"
#include "interrupts_cw32f030.h"
#include "cw32f030_gpio.h"
#include "cw32f030_rcc.h"
#include "cw32f030_systick.h"
#include "interrupts_cw32f030.h"
#include "system_cw32f030.h"
#endif /* __MAIN_H */
  • **文件main.c**
#include "CW32F030.h"                   // Device header
#include "FreeRTOS.h"
#include "main.h"
#include "task.h"
#include "queue.h"

//code 代碼空間 ro-data 常量空間 rw-data 已全局變量 zi-data 未全局變量等
//**********************************
//		 宏定義
#define LED_TASK_NVIC		2				//任務(wù)優(yōu)先級
#define LED_TASK_Size  	50				//任務(wù)堆棧大小
TaskHandle_t LED_Task_Handler;		//句柄

//*******************************
//			函數(shù)申明
void LED_task(void *pvParameters);




void LED_init()
{
    GPIO_InitTypeDef GPIO_InitStruct;
		__RCC_GPIOC_CLK_ENABLE();
		PC13_AFx_GPIO();
		
		GPIO_InitStruct.IT = GPIO_IT_NONE;			//控制腳初始化
		GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
		GPIO_InitStruct.Pins = GPIO_PIN_13;
		GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
		GPIO_Init(CW_GPIOC, &GPIO_InitStruct);

}


void LED1(void *pvParameters)
{
   int i;
	
    while(1)
    {
        PC13_SETLOW();
			  vTaskDelay(100);
				PC13_SETHIGH();
				vTaskDelay(100);
    }
}

int main()
{
	
	  LED_init();
		PC13_SETLOW();
    xTaskCreate(LED1, "LED1", 128, NULL, 1, &LED_Task_Handler);
    /* 啟動調(diào)度器 */
    vTaskStartScheduler();
    /* 如果程序運(yùn)行到了這里就表示出錯了, 一般是內(nèi)存不足 */
    return 0;

}

工程下載鏈接:正在審核

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16665

    瀏覽量

    347740
  • RTOS
    +關(guān)注

    關(guān)注

    20

    文章

    804

    瀏覽量

    119113
  • 芯源
    +關(guān)注

    關(guān)注

    1

    文章

    13

    瀏覽量

    7980
  • 開發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    527

    瀏覽量

    16912
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    168

    瀏覽量

    500
  • 武漢芯源
    +關(guān)注

    關(guān)注

    1

    文章

    62

    瀏覽量

    201
收藏 人收藏

    評論

    相關(guān)推薦

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?1683次閱讀
    <b class='flag-5'>CW32</b>快速<b class='flag-5'>開發(fā)</b>入門

    CW32開發(fā)者扶持計劃#CW32 #芯片

    CW32
    CW32生態(tài)社區(qū)
    發(fā)布于 :2023年05月24日 16:56:14

    CW32 MCU開發(fā)資料匯總(手冊、工具、固件庫)

    32L083_StdPeriph_Lib.zip4、CW32 MCU開發(fā)工具:*附件:CW-DAPLINK調(diào)試器驅(qū)動.zip*附件:CW-DAPLINK使用手冊.pdf*附件:
    發(fā)表于 07-27 14:47

    開始報名!CW32開發(fā)者扶持計劃正式進(jìn)行,將助力中國的大學(xué)教育及人才培養(yǎng)

    才培養(yǎng),建立以企業(yè)為主體、市場為導(dǎo)向、產(chǎn)學(xué)研深度融合的技術(shù)創(chuàng)新體系。2023年3月,武漢芯源半導(dǎo)體開發(fā)者扶持計劃正式開始進(jìn)行,以打造更為豐富的CW32生態(tài)社區(qū)。武漢芯源半導(dǎo)體
    發(fā)表于 03-14 10:28

    開發(fā)者扶持計劃】教師、學(xué)生、工程師均可免費(fèi)參與

    [CW32開發(fā)者扶持計劃] 是CW32生態(tài)社區(qū)面向全球電子愛好、高校師生、工程師群體發(fā)出的一項
    發(fā)表于 04-27 12:10

    開發(fā)者扶持計劃CW32-FreeRTOS

    cw32配置好的Free-rtos
    發(fā)表于 04-18 14:22 ?0次下載

    開始報名!CW32開發(fā)者扶持計劃正式進(jìn)行,將助力中國的大學(xué)教育及人才培養(yǎng)

    武漢芯源半導(dǎo)體積極參與推動中國的大學(xué)教育改革以及注重電子行業(yè)的人才培養(yǎng),建立以企業(yè)為主體、市場為導(dǎo)向、產(chǎn)學(xué)研深度融合的技術(shù)創(chuàng)新體系。2023年3月,武漢芯源半導(dǎo)體開發(fā)者扶持計劃正式開始進(jìn)行,以打造更為豐富的
    的頭像 發(fā)表于 03-14 11:35 ?528次閱讀
    開始報名!<b class='flag-5'>CW32</b><b class='flag-5'>開發(fā)者</b><b class='flag-5'>扶持</b><b class='flag-5'>計劃</b>正式進(jìn)行,將助力中國的大學(xué)教育及人才培養(yǎng)

    cw32和stm32的區(qū)別

    cw32和stm32的區(qū)別 CW32和STM32是兩種常見的單片機(jī),被廣泛應(yīng)用于各種電子設(shè)備中。在本文中,我們將深入探討CW32和STM32之間的區(qū)別和優(yōu)劣勢。 1. 硬件性能 硬件性能是衡量單片機(jī)
    的頭像 發(fā)表于 08-16 11:15 ?3501次閱讀

    cw32和gd32的區(qū)別

    cw32和gd32的區(qū)別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩有很多不同之處,下面我們來詳細(xì)介紹。 首先從CW32系列開始,
    的頭像 發(fā)表于 08-16 11:15 ?1656次閱讀

    基于CW32的無刷水泵方案

    基于CW32的無刷水泵方案
    的頭像 發(fā)表于 11-03 17:28 ?681次閱讀
    基于<b class='flag-5'>CW32</b>的無刷水泵方案

    基于CW32熱敏電阻采集溫度應(yīng)用

    基于CW32熱敏電阻采集溫度應(yīng)用
    的頭像 發(fā)表于 10-25 16:45 ?428次閱讀
    基于<b class='flag-5'>CW32</b>熱敏電阻采集溫度應(yīng)用

    CW32 PWM輸出功能介紹

    CW32 PWM輸出功能介紹
    的頭像 發(fā)表于 09-27 16:12 ?647次閱讀
    <b class='flag-5'>CW32</b> PWM輸出功能介紹

    CW32實時時鐘(RTC)介紹

    CW32實時時鐘(RTC)介紹
    的頭像 發(fā)表于 10-24 15:36 ?924次閱讀
    <b class='flag-5'>CW32</b>實時時鐘(RTC)介紹

    基于CW32的RC522刷卡模塊的應(yīng)用

    基于CW32的RC522刷卡模塊的應(yīng)用
    的頭像 發(fā)表于 11-02 14:53 ?871次閱讀
    基于<b class='flag-5'>CW32</b>的RC522刷卡模塊的應(yīng)用

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?605次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用