前言
- 感謝由芯源半導體提供的物料與技術支持
- CW32是武漢芯源半導體生產的高性能低成本MCU,歡迎大家多多使用***,支持國產!!!
- 開發者扶持計劃由CW32生態社區與立創EDA共同合作發起,更多詳細內容:開發者扶持計劃-電子發燒友站內搜索 (elecfans.com)
- 本次移植使用的硬件為官方CW32F030小藍板,最終效果為點亮PC13的LED
1,Free-RTOS源碼下載
- Free-RTOS源碼鏈接
- 進入后點擊 Get Updates;等待一會就自動下載了
- 下載解壓后檢查文件是否齊全
- 一定要有這個文件,后面的移植也主要用到這個文件
- 進去后會有四個文件夾,案例,庫,源文件,測試文件
2,建立文件夾
- 文件夾新建在你的工程里,與User同級
- 新建一個RTOS文件夾,并添加 include protable source
3,copy系統源碼進入新建的工程文件
- 一,FreeRTOS\\Source\\include :這個文件路徑里的所有 .h 文件復制進 新建的include文件夾中。**
- 三,在該路徑中尋找到FreeRTOSConfig.h的文件,并將他復制進之前新建的include的文件夾中
- 四, 在 FreeRTOS\\Source\\portable\\MemMang 路徑下尋找到heap文件,并將?全部復制進 新建的peotable文件中 。
- 五, 在 reeRTOS\\Source\\portable\\RVDS\\ARM_CM0 該路徑下尋找到port文件,復制進新建的portble文件中
-
六, 將在該路徑下出現的 .c文件都移動進新建source文件夾內。
移動后的效果
4,Keil的工程配置
- 下面是需要新建的組,以及添加的文件
- RTOS/source
- RTOS/port
5,添加工程路徑
- 選擇將 RTOS下的source路徑添加入內。
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 內屏蔽以下函數,并添加:頭文件
#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
}
- 屏蔽以下兩個函數
7,測試代碼
注意:因為CW32F030.h內可以沒有包含管腳等的.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 //任務優先級
#define LED_TASK_Size 50 //任務堆棧大小
TaskHandle_t LED_Task_Handler; //句柄
//*******************************
// 函數申明
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);
/* 啟動調度器 */
vTaskStartScheduler();
/* 如果程序運行到了這里就表示出錯了, 一般是內存不足 */
return 0;
}
工程下載鏈接:正在審核
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
mcu
+關注
關注
146文章
17123瀏覽量
350976 -
RTOS
+關注
關注
22文章
811瀏覽量
119593 -
芯源
+關注
關注
1文章
13瀏覽量
7998 -
開發者
+關注
關注
1文章
563瀏覽量
17005 -
CW32
+關注
關注
1文章
203瀏覽量
626 -
武漢芯源
+關注
關注
1文章
66瀏覽量
253
發布評論請先 登錄
相關推薦
CW32 MCU開發資料匯總(手冊、工具、固件庫)
32L083_StdPeriph_Lib.zip4、CW32 MCU開發工具:*附件:CW-DAPLINK調試器驅動.zip*附件:CW-DAPLINK使用手冊.pdf*附件:
發表于 07-27 14:47
開始報名!CW32開發者扶持計劃正式進行,將助力中國的大學教育及人才培養
才培養,建立以企業為主體、市場為導向、產學研深度融合的技術創新體系。2023年3月,武漢芯源半導體開發者扶持計劃正式開始進行,以打造更為豐富的CW32生態社區。武漢芯源半導體
發表于 03-14 10:28
開始報名!CW32開發者扶持計劃正式進行,將助力中國的大學教育及人才培養
武漢芯源半導體積極參與推動中國的大學教育改革以及注重電子行業的人才培養,建立以企業為主體、市場為導向、產學研深度融合的技術創新體系。2023年3月,武漢芯源半導體開發者扶持計劃正式開始進行,以打造更為豐富的
cw32和stm32的區別
cw32和stm32的區別 CW32和STM32是兩種常見的單片機,被廣泛應用于各種電子設備中。在本文中,我們將深入探討CW32和STM32之間的區別和優劣勢。 1. 硬件性能 硬件性能是衡量單片機
cw32和gd32的區別
cw32和gd32的區別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者有很多不同之處,下面我們來詳細介紹。 首先從CW32系列開始,
評論