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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值