DShanMCU-F103学习日常1——从0创建一个FreeRTOS工程

一、实验内容

涉及硬件:DShanMCU-F103开发板(STM32F103C8T6、OLED屏幕)
涉及软件:STM32CubeMX、Keilv5、
实现功能:同时实现板上LED灯的闪烁和OLED屏幕显示

二、操作过程

1.使用STM32CubeMX创建模组驱动文件

STM32CubeMX界面
在STM32CubeMX选择STM32F103C8T6芯片
新工程初始界面
来到新工程界面,始时钟是操作系统的核心部分,控制着任务的调度和时间管理,先配置时钟。在system core中选定RCC勾选高速外部时钟源晶振
在这里插入图片描述
设置MCU最高时钟频率72MHz
时钟频率72MHz

2.配置FreeRTOS

在中间件选项中选择FreeRTOS,应用CMSIS_V2,参数配置方面先用的默认
在这里插入图片描述

3.创建新工程

选择好芯片、配置好FreeRTOS参数接下来创建新工程,在project manager设置好,点击create code
在这里插入图片描述
project manager

4.功能实现的代码编译

a)板上LED灯的闪烁

通过电路原理图,板上LED灯由PC13控制,将这个端口设置成GPIO输出口:GPIO_OUTPUT,再次点击生成代码
在这里插入图片描述
用keil打开CubeMX生成的工程文件,将相关的包括.c 和.h的LED的驱动代码添加入工程中,还要将驱动文件所在地址加入工程的目录当中防止编译器找不到文件
在这里插入图片描述
在freertos.c文件中,有一段创建工程时的一个默认任务,现在在里面进行功能实现的代码编写

void Led_Test(void)
{
    Led_Init();

    while (1)
    {
        Led_Control(LED_GREEN, 1);
        mdelay(500);

        Led_Control(LED_GREEN, 0);
        mdelay(500);
    }
}

最终实现板上LED闪烁

b)OLED显示内容

OLED屏幕使用I2C1通道,具体使用PB6、PB7分别作为SCL、SDA引脚,接下来在CubeMX进行配置,都使用默认参数,生成代码
在这里插入图片描述
相同地添加LCD相关驱动文件和字库文件ascii_font.c,这个文件只加入工程路径而不加入工程也可以

void LCD_Test(void)
{
    OLED_Test();
}
void OLED_Test(void)
{
    OLED_Init();
	// 清屏
	OLED_Clear();
    
	while (1)
	{
		// 在第0列第2页打印一个字符串"Hello World!"
		OLED_PrintString(0, 2, "Hello World!");
	}
}

最终实现oled屏幕显示 Hello World! 。

5.创建多任务程序

上面已经分别实现板上LED等的闪烁和OLED屏幕的显示,现在要将两个死循环同时实现,就必须使用RTOS多任务系统。在刚刚,已经在默认任务void StartDefaultTask(void *argument)中实现OLED屏幕的测试,现在添加新的函数用来实现LED闪烁

void MyTask(void *argument){
	while(1){
		Led_Test();
	}
}

然后创建一个新的任务

xTaskCreate(MyTask, "mytask", 128, NULL, osPriorityNormal, NULL);

各参数说明:

BaseType_t xTaskCreate(
	TaskFunction_tp vTaskCode,
	const char * constpcName,
	unsigned short usStackDepth,
	void *pvParameters,
	UBaseType_t uxPriority,
	TaskHandle_t *pvCreatedTask
);

最后经过整合,在默认任务void StartDefaultTask(void *argument)中实现OLED屏幕的测试,在新创建的任务MyTask()实现了LED灯的闪烁。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: gd32f103c8t6是一款基于Cortex-M3架构的单片机,其有良好的性能和稳定性,非常适合工业控制等领域的应用。 FreeRTOS是一款流行的实时操作系统(RTOS),可以方便地对任务进行调度和管理。在gd32f103c8t6上搭载FreeRTOS工程,可以大大提升程序的可靠性和实时性。通过实现任务的并发执行,可以使系统更加高效地利用CPU资源,从而实现更快的响应速度和更高的精度要求。 在搭载FreeRTOS的gd32f103c8t6上,可以方便地实现多任务操作、任务间的通信和同步、定时器管理、中断处理等功能。同时,由于FreeRTOS具有可移植性,将其移植到其他平台上也相对容易。 总的来说,gd32f103c8t6搭载FreeRTOS工程可以提高系统的可靠性、可移植性和效率,适用于需要高可靠性和实时性的嵌入式应用。 ### 回答2: gd32f103c8t6是一款微控制器芯片,在实际项目中,常配合FreeRTOS操作系统来进行程序设计和开发。FreeRTOS是一种开放源代码的实时操作系统,被广泛应用于嵌入式系统和物联网等方面。gd32f103c8t6 freertos工程通常包含了以下几个方面: 1. 硬件配置:在设计gd32f103c8t6 freertos工程时,需要将芯片的外设和引脚进行配置。比如,针对不同的应用,我们可以将芯片的UART、SPI、I2C等外设进行相应的设置,同时还需要配置芯片的时钟和中断。 2. FreeRTOS配置:在工程时的FreeRTOS配置,可以选择不同的内核、任务配置、时间片分配等,以满足不同的应用需求。可以根据是否需要任务切换打开或关闭任务切换,还可以控制任务的调度顺序等。 3. 应用程序编写:一般情况下,gd32f103c8t6 freertos工程会涉及到各种实际场景的应用,比如可以编写控制流程、算法计算、信号处理等等。在编写应用程序的时候,需要考虑工程的实时性、可移植性和可维护性等问题。 4. 调试和优化:在完成代码编写之后,需要进行调试和优化工作。这包括了对代码进行单元测试和集成测试,排除各种bug,使系统运行更为稳定和可靠。同时,还可以对系统进行性能测试和优化,以提高系统响应速度和资源利用率。 总之,gd32f103c8t6 freertos工程的开发需要开发者有深入的硬件、操作系统和编程知识,并且需要仔细考虑设计的各种细节。只有对整个系统有深入的了解,才能保证工程的质量和可靠性。 ### 回答3: gd32f103c8t6 freertos工程是一种嵌入式项目,使用了GD32F103C8T6芯片和FreeRTOS操作系统。该项目主要目的是实现多个任务在嵌入式系统上的并发执行。本文将对gd32f103c8t6 freertos工程进行详细解析。 GD32F103C8T6芯片是一款ARM Cortex-M3内核的芯片,具有32位数据宽度和72MHz的时钟速度。它具有多种外设,包括USART、SPI、I2C、ADC等,能够满足各种不同的嵌入式应用需求。同时,它还具有丰富的存储空间,可支持最大64KB的Flash程序存储器和20KB的SRAM数据存储器。 FreeRTOS是一种实时操作系统,可用于嵌入式系统中。它提供了许多基本和高级功能,包括任务管理、时间管理、内存管理、中断控制等,可帮助开发人员实现有效而可靠的嵌入式系统。FreeRTOS采用轻量级的任务调度算法,使得它能够支持多任务并发执行,最大限度地利用嵌入式系统的资源。 gd32f103c8t6 freertos工程主要分为三个部分,分别是系统初始化、任务创建和任务调度。系统初始化是指对GD32F103C8T6芯片和FreeRTOS操作系统进行初始化设置,目的是确保它们能够正常运行。任务创建是指在FreeRTOS中创建多个任务,并设置它们的优先级和堆栈大小等参数,以便在系统运行时进行并发执行。任务调度是指系统按照任务优先级进行任务调度,保证高优先级任务先执行。 在gd32f103c8t6 freertos工程中,可以创建多个任务并且这些任务可以并发执行。例如,可以创建任务实现USART通信、温度检测、人脸识别等功能,让它们同时运行并具有不同的优先级。这样能够提高系统效率并且能够满足不同的应用要求。 总之,gd32f103c8t6 freertos工程是一种灵活性强,性能优良的嵌入式项目。它可以利用GD32F103C8T6芯片和FreeRTOS操作系统,实现多任务并发执行的功能,满足各种复杂应用的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值