前言
- 感謝由芯源半導(dǎo)體提供的物料與技術(shù)支持
- CW32是武漢芯源半導(dǎo)體生產(chǎn)的高性能低成本MCU,歡迎大家多多使用***,支持國產(chǎn)!!!
- 開發(fā)者扶持計(jì)劃由CW32生態(tài)社區(qū)與立創(chuàng)EDA共同合作發(fā)起,更多詳細(xì)內(nèi)容:開發(fā)者扶持計(jì)劃-電子發(fā)燒友站內(nèi)搜索 (elecfans.com)
- 本次移植使用的硬件為官方CW32F030小藍(lán)板,最終效果為點(diǎn)亮PC13的LED
1,Free-RTOS源碼下載
- Free-RTOS源碼鏈接
- 進(jìn)入后點(diǎn)擊 Get Updates;等待一會(huì)就自動(dòng)下載了
- 下載解壓后檢查文件是否齊全
- 一定要有這個(gè)文件,后面的移植也主要用到這個(gè)文件
- 進(jìn)去后會(huì)有四個(gè)文件夾,案例,庫,源文件,測(cè)試文件
2,建立文件夾
- 文件夾新建在你的工程里,與User同級(jí)
- 新建一個(gè)RTOS文件夾,并添加 include protable source
3,copy系統(tǒng)源碼進(jìn)入新建的工程文件
- 一,FreeRTOS\\Source\\include :這個(gè)文件路徑里的所有 .h 文件復(fù)制進(jìn) 新建的include文件夾中。**
- 三,在該路徑中尋找到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文件都移動(dòng)進(jìn)新建source文件夾內(nèi)。
移動(dòng)后的效果
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
}
- 屏蔽以下兩個(gè)函數(shù)
7,測(cè)試代碼
注意:因?yàn)镃W32F030.h內(nèi)可以沒有包含管腳等的.h文件 ,因此新建了一個(gè)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)先級(jí)
#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);
/* 啟動(dòng)調(diào)度器 */
vTaskStartScheduler();
/* 如果程序運(yùn)行到了這里就表示出錯(cuò)了, 一般是內(nèi)存不足 */
return 0;
}
工程下載鏈接:正在審核
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351197 -
RTOS
+關(guān)注
關(guān)注
22文章
813瀏覽量
119636 -
芯源
+關(guān)注
關(guān)注
1文章
13瀏覽量
8003 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
575瀏覽量
17011 -
CW32
+關(guān)注
關(guān)注
1文章
203瀏覽量
641 -
武漢芯源
+關(guān)注
關(guān)注
1文章
66瀏覽量
255
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
CW32 MCU開發(fā)資料匯總(手冊(cè)、工具、固件庫)
32L083_StdPeriph_Lib.zip4、CW32 MCU開發(fā)工具:*附件:CW-DAPLINK調(diào)試器驅(qū)動(dòng).zip*附件:CW-DAPLINK使用手冊(cè).pdf*附件:
發(fā)表于 07-27 14:47
開始報(bào)名!CW32開發(fā)者扶持計(jì)劃正式進(jìn)行,將助力中國的大學(xué)教育及人才培養(yǎng)
才培養(yǎng),建立以企業(yè)為主體、市場(chǎng)為導(dǎo)向、產(chǎn)學(xué)研深度融合的技術(shù)創(chuàng)新體系。2023年3月,武漢芯源半導(dǎo)體開發(fā)者扶持計(jì)劃正式開始進(jìn)行,以打造更為豐富的CW32生態(tài)社區(qū)。武漢芯源半導(dǎo)體
發(fā)表于 03-14 10:28
【開發(fā)者扶持計(jì)劃】教師、學(xué)生、工程師均可免費(fèi)參與
[CW32開發(fā)者扶持計(jì)劃] 是CW32生態(tài)社區(qū)面向全球電子愛好者、高校師生、工程師群體發(fā)出的一項(xiàng)
發(fā)表于 04-27 12:10
開始報(bào)名!CW32開發(fā)者扶持計(jì)劃正式進(jìn)行,將助力中國的大學(xué)教育及人才培養(yǎng)
武漢芯源半導(dǎo)體積極參與推動(dòng)中國的大學(xué)教育改革以及注重電子行業(yè)的人才培養(yǎng),建立以企業(yè)為主體、市場(chǎng)為導(dǎo)向、產(chǎn)學(xué)研深度融合的技術(shù)創(chuàng)新體系。2023年3月,武漢芯源半導(dǎo)體開發(fā)者扶持計(jì)劃正式開始進(jìn)行,以打造更為豐富的
cw32和stm32的區(qū)別
cw32和stm32的區(qū)別 CW32和STM32是兩種常見的單片機(jī),被廣泛應(yīng)用于各種電子設(shè)備中。在本文中,我們將深入探討CW32和STM32之間的區(qū)別和優(yōu)劣勢(shì)。 1. 硬件性能 硬件性能是衡量單片機(jī)
cw32和gd32的區(qū)別
cw32和gd32的區(qū)別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者有很多不同之處,下面我們來詳細(xì)介紹。 首先從CW32系列開始,
評(píng)論