1、把上次创建的工程复制一份并改名“2.led”。

2、鼠标左键双击“2.led”文件夹,进去之后再双击子目录下的文件(只有一个文件夹,这里就不展示了),然后点击下图所示的蓝色图标的文件,进入cubemx编辑工程。

3、本次我们要点亮led灯,所以需要知道led灯的引脚及驱动电平,这里我直接去LCKFB的手册中截下来了。如图所示,led在PB2引脚上,并且输出高电平才能点亮。

3、我们在cubemx中找到PB2,鼠标左键点击,然后选择GPIO_Output。

4、点击左边的“System Core”,点击“GPIO”,在下面按照如下图的配置进行选择。

5、点击右上角的蓝色按钮生成工程。

6、直接点击中间的“Open Project”

7、编译一下,0error 0warring。

8、返回文件夹,创建两个文件夹,一个叫"user_os"用于存放应用层代码,另一个叫“HardWare”用于存放底层驱动代码。然后分别进入到两个目录,并创建“src”和“inc”目录,前者存放源文件,后者存放头文件。

9、在 ./HardWare/src/ 和 ./HardWare/inc/  目录下分别创建 led.c 文件和 led.h文件。

 

在 ./user_os/src/ 下创建 user_os.c 、user_led_task.c 文件,在 ./user_os/inc/ 下创建 user_os.h 文件

10、回到keil里,把文件加进来。最后一定要点击OK喔,不然需要重新走一遍流程。

然后会在左边栏里出现下图所示的目录及文件。

11、接下来该指定头文件的目录了。

点击魔术棒

然后按照箭头点击

把这里把刚刚的两个“inc”目录都指定进去

最后是这个效果,然后点击两次 OK

 

12、在led.c写如下代码

#include "led.h"
 
void led_on(void)
{
HAL_GPIO_WritePin(led_GPIO_Port,led_Pin,GPIO_PIN_SET);
}
 
void led_off(void)
{
HAL_GPIO_WritePin(led_GPIO_Port,led_Pin,GPIO_PIN_RESET);
}

在led.h写下如下代码

#ifndef _LED_H
#define _LED_H

#include "main.h"

void led_on(void);
void led_off(void);

#endif

在user_task.c里写如下代码

#include "led.h"
 
void user_led_task(void *argv)
{
 
led_on();
HAL_Delay(1000);
led_off();
HAL_Delay(1000);
}

 

在user_os.c里写如下代码

#include "user_os.h"
 
void user_os_task_start(void *argv)
{
taskENTER_CRITICAL();
xTaskCreate(
       user_led_task,      // 任务函数
       "user_led_task",    // 任务名称
       128,                        // 任务堆栈大小
       NULL,                       // 任务参数
       tskIDLE_PRIORITY + 1,       // 任务优先级
       NULL );                     // 任务句柄
//..在下面按照上格式添加其他任务
taskEXIT_CRITICAL();
vTaskDelete(NULL);
}
 
void user_os_run(void)
{
taskENTER_CRITICAL();
xTaskCreate(
       user_os_task_start,      // 任务函数
       "user_os_task_start",    // 任务名称
       128,                        // 任务堆栈大小
       NULL,                       // 任务参数
       tskIDLE_PRIORITY + 1,       // 任务优先级
       NULL );                     // 任务句柄
 
}

 

在user_os.h里写如下代码

#ifndef _USER_OS_H
#define _USER_OS_H

#include "stdint.h"
#include "cmsis_os.h"

void user_led_task(void *argv);

void user_os_run(void);

#endif

 

打开main.c,按如下位置加入代码。

13、编译下载(不上图了喔)

14、现象我就不演示了,确定能点亮,因为上述工程中没有设置下载程序后自动复位,因此如果不亮就手动按一下复位键。

\n#学习资料#
#ifndef_LED_H#
#endif在user_task.c里写如下代码#
#ifndef_USER_OS_H#
#includestdint.h#
#学习资料#
立创开发板

还没有评论,抢个沙发!