準(zhǔn)備工作:
先下載了官方提供的手冊(cè)、DEMO、固件包,并通讀了一下(注意,MDK版本要求比較高!為了找個(gè)能用的Keil折騰了很久):
制作裸機(jī)點(diǎn)燈代碼
前面已經(jīng)有‘探路者’把這部分做完了,我就不再敘述了,不過(guò)還是要自己動(dòng)手移植一下,這樣可以了解片子與f103等常用的芯片的區(qū)別。
添加FreeRTOS部分
這是第一次真正意義上自己獨(dú)立移植了一次FreeRTOS^_^,沒(méi)有遇到太多的障礙:
使用的FreeRTOS版本是正點(diǎn)原子f103光盤里面的,9.0版本
解壓縮后,只需要復(fù)制FreeRTOS,而用不到*-Plus:
FreeRTOS中,也有很多用不到的文件,請(qǐng)參考正點(diǎn)原子開(kāi)源的FreeRTOS移植教程。
需要注意的地方是GD32的中斷都放在了gd32f3x0_it.c中,需要屏蔽2個(gè)中斷空函數(shù),進(jìn)而直接調(diào)用freeRTOS內(nèi)的同名函數(shù):
并在systick_handler中加入調(diào)用FreeRTOS的時(shí)鐘函數(shù):
void SysTick_Handler(void) { //led_spark(); delay_decrement(); #if (INCLUDE_xTaskGetSchedulerState == 1) if (xTaskgetSchedulerState() != taskSCHEDULER_NOT_STARTED) { #endif xPortSysTickHandler(); #if (INCLUDE_xTaskGetSchedulerState == 1) } #endif }
主要FreeRTOS的棧設(shè)置要合理:
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 2 * 1024 ) )
Program Size: Code=6068 RO-data=6448 RW-data=112 ZI-data=4296
這樣片子的可玩性還是挺高的。
移植正點(diǎn)原子OLED代碼:
這部分代碼邏輯比較簡(jiǎn)單,看下正點(diǎn)原子的教程都可以很快搞定:
主要修改了正點(diǎn)原子通過(guò)位帶操作控制引腳改為使用GD的庫(kù)函數(shù):
//---------------------------OLED端口定義-------------------------- #define OLED_CS(x) gpio_bit_write(GPIOB,GPIO_PIN_0,(FlagStatus)(x)); #define OLED_RST(x) gpio_bit_write(GPIOA,GPIO_PIN_5,(FlagStatus)(x)); #define OLED_DC(x) gpio_bit_write(GPIOB,GPIO_PIN_1,(FlagStatus)(x)); #define OLED_WR(x) gpio_bit_write(GPIOB,GPIO_PIN_4,(FlagStatus)(x)); #define OLED_RD(x) gpio_bit_write(GPIOB,GPIO_PIN_5,(FlagStatus)(x));
最終完成移植:
總結(jié)
現(xiàn)在芯片都比較成熟,性能都過(guò)剩,這款芯片提供的資料也都?jí)蛴?,?duì)于上手使用比較方便。后面自己做一些手表、物聯(lián)網(wǎng)小產(chǎn)品,可以玩一下。
審核編輯:劉清
-
OLED
+關(guān)注
關(guān)注
120文章
6285瀏覽量
228044 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
493瀏覽量
64325 -
裸機(jī)
+關(guān)注
關(guān)注
0文章
40瀏覽量
6695 -
中斷函數(shù)
+關(guān)注
關(guān)注
0文章
13瀏覽量
5490
發(fā)布評(píng)論請(qǐng)先 登錄
FreeRTOS系統(tǒng)使用xTaskCreate產(chǎn)生的任務(wù)與osThreadDef 產(chǎn)生的線程有什么不同?
在移植FreeRTOS-CLI時(shí),發(fā)現(xiàn)CLI任務(wù)移植無(wú)法被執(zhí)行怎么回事
請(qǐng)問(wèn)CubeMX如何配置FreeRTOS跑多線程任務(wù)?
FreeRTOS任務(wù)如何創(chuàng)建和刪除?
IAR移植FreeRTOS

【STM32】FreeRTOS移植

初入FreeRTOS

基于FreeRTOS的STM32多任務(wù)程序

FreeRTOS系列第10篇---FreeRTOS任務(wù)創(chuàng)建和刪除

FreeRTOS的任務(wù)創(chuàng)建與刪除
RA FreeRTOS任務(wù)創(chuàng)建

評(píng)論