STM32+freeRTOS学习笔记-1.使用cube MX创建一个freeRTOS的keil工程
来源:互联网 发布:都市之数据人生 编辑:程序博客网 时间:2024/05/23 22:20
硬件:机智云STM32平台V2.1
软件:cube MX+keil MDK-ARM V5
机智云的STM32开发平台小巧玲珑,用起来也顺手,所以就将正点原子的战舰开发板扔一旁吃灰了。目前刚开始学习,用到的硬件资源也不多,后续做相关实验时说不准又捡起来了。
1.简单介绍一下cube MX的使用
下载安装的过程就不在赘述,直接开始使用。
双击打开cube MX,点击新建工程
由于本底板的MCU型号是:STM32F103C8T6,所以按照下图来选择就对了。这个根据当时自己使用的MCU型号来对应选择就好了。
接着就是资源配置界面了,
1、先配置RCC的时钟源为外部高速时钟
2、配置时钟系统,其实很简单,直接将HCLK设置为72MHz,其他的会根据此自动选择。这幅时钟配置图还是很直接明了,对学习STM32时钟系统有很好的借鉴意义。
3、配置对应的LED灯的端口GPIO为输出模式。
LED原理图:
接着在cube MX中配置对应的LED的IO为输出模式。
接下来生成代码,同时也要保存此工程,方便下次接着添加相关功能。
最后点击“OK”,生成相关代码。
使用keil打开工程,找到main.c。如下,在while(1)中添加LED灯闪烁的代码。
int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Call init function for freertos objects (in freertos.c) */ MX_FREERTOS_Init(); /* Start scheduler */ osKernelStart(); /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { //自己添加的LED闪烁代码 HAL_Delay(400); HAL_GPIO_WritePin(led1_GPIO_Port, led1_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(led2_GPIO_Port, led2_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(led3_GPIO_Port, led3_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(led4_GPIO_Port, led4_Pin, GPIO_PIN_SET); HAL_Delay(400); HAL_GPIO_WritePin(led1_GPIO_Port, led1_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(led2_GPIO_Port, led2_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(led3_GPIO_Port, led3_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(led4_GPIO_Port, led4_Pin, GPIO_PIN_RESET); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}
编译得到hex文件,烧录到机智云的STM底板中,看到四个LED开始闪烁了。
至此,cube MX初体验完成。
总结一下:cube MX用起来非常顺手,尤其是添加一些中间件的时候,如RTOS 、 fatfs 、tcp/ip等等。真的是非常的方便,之前自己移植老半天,费劲不说,还经常出错。现在有了这个工具就轻松多了,但是带来的一点是库函数完全不一样了,至少我读写IO的函数是变了,不过不要紧,后续适应一下就行了。
开发工具越来越向着屏蔽硬件接口层的方向发展,从最初的寄存器编程到后来的库函数编程再到现在的图形界面编程,对嵌入式开发程序员的要求越来越低,入门门槛越来越低。对厂商推广自己的芯片固然是一件好事,但是于我们而言,自己接触底层的机会越来越少,真的底层出了问题,根本不会解。所以使用哪种方式来编程,仁者见仁智者见智。结合自己的实际环境适当选择吧。
下一节介绍如何基于此创建一个LED灯闪烁任务。
完!
- STM32+freeRTOS学习笔记-1.使用cube MX创建一个freeRTOS的keil工程
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS STM32移植笔记
- FreeRTOS移植笔记(一)创建工程模板
- 1.FreeRTOS的简介&移植FreeRTOS到STM32平台
- 如何创建新的FreeRTOS工程
- FreeRTOS学习笔记——创建任务
- FreeRTOS 学习笔记 1
- FreeRTOS学习笔记
- FreeRTOS学习笔记
- FreeRTOS学习笔记一
- FreeRTOS学习笔记二
- FreeRTOS学习笔记三
- FreeRTOS 学习笔记0920
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
- 必装
- 成为优秀程序员的必备条件
- javascript面向对象(七)原型另外的作用--扩充对象的属性和方法
- Pygame:编写一个小游戏
- STM32+freeRTOS学习笔记-1.使用cube MX创建一个freeRTOS的keil工程
- 重建二叉树
- java封装中的private关键字和set,get方法
- Fluent Python 笔记一
- Angular.js用法(二):购物车数量加减及总价计算
- 实战Java高并发程序设计之CyclicBarrier
- *args 和 **kwargs是什么?
- RecycleView-自定义分割线-ItemDecoration
- 数据结构课程设计