IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 使用STM32CubeMX+freeRtos+MDK开发平衡小车(第一篇) -> 正文阅读

[嵌入式]使用STM32CubeMX+freeRtos+MDK开发平衡小车(第一篇)

目录

一、STM32CubeMX安装

二、创建项目

三、开启时钟配置外设

? 3.1配置时钟

3.2配置USART1?

?3.3配置SYS?

?3.4freertos配置和任务添加

四、代码生成

4.1重写串口程序并通过软件调试进行测试

4.1调试程序


一、STM32CubeMX安装

? ? ? ? 这是我第一次做开源项目,因为某些原因需要学习FreeRtos的知识,在自己学习的同时,也记录一下过程和开发的心得,读者共勉,有不足的地方希望大家可以指出来,相互学习。

? ? ? ? 要使用FreeRTOS当然可以通过移植源码,创建任务的方式去做,事在人为,我选择用CubeMX的原因还是觉得这个工具在初始化一些硬件和创建进程是比较便捷的,用起来也比较舒服。废话不多说,开始安装。

????????首先需要下载STM32CubeMX,下载的方式比较多,可以参考其他博主的博文。我这里直接用的是我一直用的,软件分享链接:http://链接:https://pan.baidu.com/s/1gU6ObwIAORT8t7Lmv12miA 提取码:0927

????????下载解压后可以看到有两个主要的,一个是java环境,没错cubemx是需要java环境的,自行安装即可,第三个就是CubeMX本体双击打开:

?然后开始安装

?

?

?

?

?然后等待安装完成后,双击打开:

? ? 点击HELP->manage mebedded...选择你所需要的芯片类型,后续如果需要添加芯片类型也可以在此处添加。

?等待安装完成即可

二、创建项目

? ? 选择Start My project from mcu->ACCESS TO MCU SELECTOR 选择你需要使用的MCU类型

?在Part number窗口搜索你所需要的MCU类型,然后再MCUs/MPUs List1处打开

? ? ?等待新建完成,如下

?

? ? ?Categories按照芯片的功能分类,可以选择你需要的功能。或者可以点击PinoutView中芯片的引脚去设置芯片的状态。在此之前,我的习惯是先设置Project manager里面的内容,在project目录配置生成工程的名称、代码路径、Toolchain。。路径等等。

在code Generator中选择Generate Peripheral initialization as .....将外设初始化生成为每个外设的一对 .c.h 文件.

?

三、开启时钟配置外设

? 3.1配置时钟

????????因为我用的电路板是自己画的,所以为了节省成本等等一系列的问题,我选择了C8T6的48角MCU外接8MHz的晶振。通过选择RCC的HSE告诉时钟的外部时钟。开启MCU的时钟。

? ? ? ? ?然后配置时钟,在ClockConfiguration里面配置APB1/APB2等外设的时钟,设置APB1为最大36MHz,APB2最大为72MHz。

3.2配置USART1?

开启串口USART1,用于调试时打印串口信息。

?3.3配置SYS?

????????然后开启SYS的时钟,我选择的是TIM3,因为TIM2和TIM4用来捕获时钟等功能,不开启有警告发生,具体什么,感兴趣的可以试一下。

?3.4freertos配置和任务添加

????????其实现在就可以生成HAL库去做裸机实验了,我要学习的是加上操作系统FreeRtos的配置主要目的是学习操作系统的生成和使用。所以,配置FreeRtos。

?选择Freertos interface 的CMSIS_V1。接下来添加你需要的进程即可。在Configuration的Tasks and Queues中添加。

?????????添加自己需要的进程,平衡车,第一需要的肯定是数据采集进程,根据上图的解释可以简单添加一下任务的名称、优先级、入库口函数、栈大小等。先使用默认即可,后面如若需要更大的栈也可回来自己修改。然后点击添加PID获取的进程。如下:

?至此,配置就告一段落。点击右上角的GENRATE CODE即可生成代码。可能会有点慢,等他生成就可以用了。生成以后会弹出一个窗口,点击Open Project,就可以通过MDK打开。

四、代码生成

编译完成后可以看到MX_FREERRTOS_Init()等一系列的初始化函数。

打开后该文件后可以看见创建的任务和两个任务具体要干的事情(需要自己去写)。

?

4.1重写串口程序并通过软件调试进行测试

? ? ? ? 我们在配置好以后,就需要重写fputc函数,目的是通过Printf打印信息。代码如下。

//fputc重定义目的是为了使用printf通过串口打印出来
int fputc(int ch, FILE *fp)
{
	while(!(USART1->SR & (1<<7)));
	USART1->DR = ch;
	return ch;
}

?本质上也是调用DR寄存器,有个点需要注意,就是在使用FILE时要添加stdio.h的头文件。不然会unkown type name ’FILE'报错。

4.1调试程序

写好后在两个进程中分别添加打印信息,看看是否能正常运行到进程中。可以先通过软件测试的方式。代码如下:

/* USER CODE END Header_StartGetDataTask */
void StartGetDataTask(void const * argument)
{
  /* USER CODE BEGIN StartGetDataTask */
  /* Infinite loop */
  for(;;)
  {
    osDelay(200);
		printf("数据采集任务\r\n");
  }
  /* USER CODE END StartGetDataTask */
}

/* USER CODE BEGIN Header_Start_GetPIDTask */
/**
* @brief Function implementing the myTask_GetPID thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_Start_GetPIDTask */
void Start_GetPIDTask(void const * argument)
{
  /* USER CODE BEGIN Start_GetPIDTask */
  /* Infinite loop */
  for(;;)
  {
    osDelay(200);
		printf("PID采集任务\r\n");
  }
  /* USER CODE END Start_GetPIDTask */
}

?也需要在该文件夹下添加stdio.h文件,不然会有隐式申明警告,然后编译。

然后配置魔术棒里面的软件调试先软件调试是否能打印。

要注意的是需要修改?Dialog DLL中的信息将DCM.DLL修改为DARMSTM.DLL,Parameter中的-pCM3修改为-pSTM32F103ZE即可。然后进行调试,在main函数里打断点。然后开启软件串口1

View->serail windos 选择UART#1

然后全速运行,观察是否有对应的信息?

?????????可以看到,进程执行是没有问题的,因为我的板子打样还没回来,所以烧录等一系列的实验后续再出,时间关系,就到这!!!欢迎各位大佬指出不足。

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:14:20  更:2022-10-31 12:18:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:44:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码