移植RTT到STM32

移植RTT到STM32:準備一個工程包括LED驅動和串口驅動

1.首先到KEIL官網下載RTT軟件包
在這裏插入圖片描述
2.把軟件包的文件放在你準備的工程裏面
在這裏插入圖片描述
3.打開工程,新建組,並把對應的文件添加進去
在這裏插入圖片描述
4.添加libcpu的時候,我用的是M4和MDK編譯器,添加以下兩個文件即可
在這裏插入圖片描述
5.添加路徑
在這裏插入圖片描述
6.編譯會發現有錯誤
在這裏插入圖片描述7.rtconfig.h文件中去掉#include “RTE_Components.h”
還有幾個中斷函數重複了,看錯誤提示刪掉即可

在這裏插入圖片描述
8.新建一個board.h文件,把board.c文件裏包含的頭文件及main.h添加進去
在這裏插入圖片描述
9.把需要用到外設的初始化函數寫入void rt_hw_board_init()函數裏,先初始化串口
在這裏插入圖片描述

新建線程

  • 在main.c中,main函數前初始化任務句柄爲NULL
  • 新建線程,並在main函數前聲明
  • 創建一個線程對象並對其分配內存及優先級
  • 啓動任務調度
  • 在線程裏寫你所需要實現的東西

代碼如下:

#iinclude"mian.h"
void LED1(void *parg);
void LED2(void *parg);

rt_thread_t led1=RT_NULL;//初始化任務句柄爲NULL
rt_thread_t led2=RT_NULL;

int main(void)
{
	led1=rt_thread_create("LED1",LED1,RT_NULL,512,3,20);
	led2=rt_thread_create("LED2",LED2,RT_NULL,512,3,20);
	if(RT_NULL!=led1)
	{
		rt_thread_startup(led1);//啓動任務調度
	}
	else
	{
		return -1;
	}
	
	if(RT_NULL!=led2)
	{
		rt_thread_startup(led2);
	}
	else
	{
		return -1;
	}
	
	while(1)
	{
		
	}

}

void LED1(void *parg)//任務
{
	
	GPIO_ResetBits(GPIOH,GPIO_Pin_11);
	printf("點亮綠燈\n");
	while(1)
	{
		while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==KEY_ON))
		{
			GPIO_ToggleBits(GPIOH,GPIO_Pin_11);
			rt_thread_delay(100);
		}
	}
}

void LED2(void *parg)//任務
{
	
	GPIO_ResetBits(GPIOH,GPIO_Pin_12);
	printf("點亮藍燈\n");
	while(1)
	{
		while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==KEY_ON)
		{
			GPIO_ToggleBits(GPIOH,GPIO_Pin_12);
			rt_thread_delay(200);
		}
	}
}
發佈了17 篇原創文章 · 獲贊 20 · 訪問量 5215
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章