立创开发板·天空星Free RTOS点灯(STM32F407VET6版)
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 #includestdint.h#include "cmsis_os.h" void user_led_task(void *argv); void user_os_run(void); #endif 打开main.c,按如下位置加入代码。 13、编译下载(不上图了喔) 14、现象我就不演示了,确定能点亮,因为上述工程中没有设置下载程序后自动复位,因此如果不亮就手动按一下复位键。 \n#学习资料#
987654wE271n
3 0 立创开发板
立创开发板·天空星Free RTOS创建工程(STM32F407VET6版)
1、打开STM32Cube MX软件,点击中间的三个按钮中最上面的“ACCESS TO SELECTOR”按钮,开启我们的工程创建之路。如下图所示: 2、在左上角的第一个框框中输入芯片的型号,我们的天空星的芯片型号是STM32F407VET6,所以把“STM32F407VET6”输入进去,然后点击右下角中箭头指的地方,双击鼠标。如下图所示: 3、点击“System Core”,然后点“SYS”,右边就会出来的框。点击Debug旁边的复选框,他会出来一堆东西,我们选择第二个。接着看下面的“Timebase Source”,即始终基准源,我们选择“TIM4”,不使用默认的“SysTick”。大概原因是“SysTick”要忙其他东西,再选他就忙不过来了。如下图所示: 4、上边的配置完后点击左边栏中的“RCC”,点击“HSE”旁边的复选框,选择第三个“Crystal/Ceramic Resonator”。然后点击头上的“Clock Configuration”来配置一下时钟树,因为我们的天空星上面使用的晶振是“8MHz”,因此在左边第一个蓝框框里填上数字8,再找到下面有“168 MHz max”字样的框框,然后就在这个框框里输入168,然后按下回车,他会弹出来一个消息框框,问你这么搞O不OK,所以就点OK,或者再按一下回车即可。如下图所示: 5、下面就可以配置Free RTOS了。把左边的框框们往下拉,找到“Middleware and Software Packs”并点击,点击“Interace”旁边的复选框,这里我选择了“CMSIS_V2”,听韦东山老师说这个版本兼容性更好?然后下面那个框框里的配置内容,如果小白如我就全部选择默认,不必更改。如图所示: 6、最后一步!我们再给工程的名字和路径、IDE及其版本等配置 一下就行啦!首先给工程起个名字填在“Project Name”后面的框框里,再点击“Project Location”那一行最后的叫做“Browse”灰色按钮来选择路径。温馨提示:以上操作一定避开中文名称及中文路径,不然生成的代码编译会说缺少“.s”文件的喔。然后找到“Toolchain / lDE”那一行,有两个复选框,分别选择“MDK-ARM”和“V5”。(因为我是用KEIL5的)。如图所示: 7、在生成工程之前的最后一步(真最后一步了)。点左边的“Code Generator”,然后注意看下面图中的第一框框,我勾选的是第一个,所以在生成代码的时候就会把所有库文件都会添加进工程里,因此会生成的有点慢,并且第一次编译的时候会编译好久,不信你可以试试。这里你也可以选择第二个选项,只把用到的库文件添加进去。 第二个框框里是要根据个人的风格来选择勾选与否。勾选上工程目录里就不会出现“.h”文件,反之“.c”和“.h”文件都会出现在你的工程里,可以去试试喔,看哪个更适合自己。 最后点击右上角的蓝色按钮“GENERATE CODE”即可一键生成代码。如下图所示: 8、生成成功!我们点击消息框框里中间的蓝色按钮“Open Project”打开工程看看吧!然后在工程里点击编译。(这里我没有放出来点击编译的图,如果不会就把这篇文章关闭吧)最后0 error,0 warring编译成功。至此成功创建了一个天空星(STM32F407VET6版)的FreeRTOS的空工程。 \n#学习资料#
987654wE271n
2 3 立创开发板