stm32之freeRTOS驱动小车

news2024/11/24 7:45:32

该文章记录将stm32之智能小车总结移植到freeRTOS上,期间也遇到了好些问题,这里做下记录。也是对freeRTOS的一个应用实践。

 一、freeRTOS工程的创建

        工程是利用CubeMX进行创建的,挺简单的,有空再试下手动移植freeRTOS。

启用软件定时器,不开启则不能添加定时器

 

二、移植小车的功能

        刚开始觉得功能挺简单的,就一股脑把所有的.c 和 .h文件都搞进工程里了,结果遇到了各种问题,其中一个问题是串口中断收不到,排查好久也没发现问题,最后重新创建了一个工程,一个功能一个功能的进行移植,这样出现问题就容易排查了。移动的顺序如下图所示:

主要任务代码

void TaskMicrophone(void const * argument)
{
  for(;;)
  {
		get_mode();
		reset();
		switch(runMode) {
			case tracingMode:
				traceing();
				break;
			case followMode:
				follow();
				break;
			case avoidMode:
				avoid();
				break;
			case gestureMode:
				gesture();
				break;
			case testMode:
				test();
				break;
			case stopMode:
				stop_car();
				break;
		}
    osDelay(10);
  }
  /* USER CODE END TaskMicrophone */
}

软件计时器

/* SpeedCallback function */
void SpeedCallback(void const * argument)
{
  /* USER CODE BEGIN SpeedCallback */
	sprintf(speedString, "speed:%4dcm/s", speedCnt);
	//old__clear_bottom_half();
	oled_show_string(2,2,speedString);
	speedCnt = 0;
  /* USER CODE END SpeedCallback */
}

三、问题记录

1、模拟IIC驱动PAJ7620失败,刚开始以为是时序出问题,最后发现是IIC的延时出了问题,之前是用的系统的滴答定时器作的延时,优先级高,现在freeRTOS上,使用TIM3做为时基,滴答定时器优先级最低,还不能修改,所以又换成了软件延时,虽然精度不高,但是并不影响IIC的时序

2、测速模块需要单独的定时器,未添加该功能。 改用软件定时器来计时

完整项目Github

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql中的各种日志

错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为my…

300.最长递增子序列

贪心二分查找 贪心:上升子序列尽可能长,序列上升尽可能慢,每次在上升子序列后加上的那个数尽可能小数组d,长度为len的最长上升子序列,d[i]为长度为i的最长上升子序列的末尾元素最小值,起始len1&#xff0c…

Python--入门

标识符 标识符由字母,数字,下划线_组成 第一个字符不能是数字,必须是字母或下划线 标识符区分大小写 关键字 关键字即保留字,定义标识符时不能使用关键字,python中的关键字如下图 注释 python中的单行注释用 # 多行注…

口袋参谋:0销量宝贝,如何快速获的流量曝光?

​如今的淘宝天猫,新品前期无销量前提下,是无法获得任何流量的,而唯一快速破零的方法:只有S单! 常规的搜索S单,是无法找到宝贝的,如果使用全标题、半标题,直接就会触发搜索降权&…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…

LLMs 生成式人工智能项目生命周期备忘单Generative AI Project Lifecycle Cheat Sheet

到目前为止,在本课程中,从选择模型到微调模型,再到将其与人类偏好对齐,这一切都将在您部署应用程序之前发生。为了帮助您规划生成式AI项目生命周期的各个阶段,这个速查表提供了每个工作阶段所需的时间和精力的一些指示…

python学习之5个让日常编码更方便简单的库

今天为大家分享 5 个让日常编码更简单的 Python 库,全文3900字,阅读15分钟。 一、sh https://github.com/amoffat/sh 如果曾经在 Python 中使用过 subprocess 库,那么我们很有可能对它感到失望,它不是最直观的库,可…

Centos7安装docker 和docker-compose记录(0报错顺利安装)

文章目录 前言一、docker的安装二、docker-compose的安装总结 前言 我居然没有记录过Centos7安装docker的笔记,真是不可思议。每次vps安装docker都要看网上的文章,而且都非常坑,方法千奇百怪,最后还是决定自己来记录一个完整又方…

Jupyter notebook怎么设置自动跳转问题

1.点击开始,就可以看到Jupyter,然后点击 2.结果就这样: 3你可以复制地址到浏览器,结果: 但是这么做很麻烦,所以有没有更好的办法呢?当然有下面就开始介绍 1.打开cmd(winr,输入cmd),输入以下命令…

第二证券:突发!A股T+0?刚刚,紧急回应!

沪深生意所急迫回应 6日,商场传出一个消息,传延伸A股生意时刻和部分票可日内T0一次。一个版本是提早至9点,然后下午延伸至15:30,另一个版本是上午推延至12点,下午延伸至16:00。 7日&#xff0…

TimeWise-Jira工时管理插件6.0.0发布!对比测评某知名工时插件,谁的数据处理性能更胜一筹?

近期,龙智自研插件TimeWise for Jira(Jira工时管理插件)发布了重要更新——6.0.0版本。这次升级主要针对报表性能做出了优化与提升。 对于企业级应用而言,具高效处理大规模数据的能力是最为关键。龙智深谙国内用户需求&#xff0…

阿里云关系型数据库RDS详细介绍PolarDB_MySQL_MariaDB_SQL Server_PostgreSQL

阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …

【Axure高保真原型】自适应多行输入框

今天和大家分享自适应多行文本框的原型模板,我们可以在输入框里输入文字,随着文字的数量,输入框的高度也会自动调整……具体效果可以打开下方原型地址体验或者点击下方视频观看 【原型效果】 【Axure高保真原型】自适应多行输入框 【原型预览…

重装系统Win10专业版步骤和详细教程

在Windows 10专业版中,使用一键重装系统能够迅速恢复系统到出厂默认状态,以便重新开始。一键重装系统的步骤相对简单,但确保备份重要文件和软件是重要的一步。本文将详细介绍如何一键重装系统Win10专业版的步骤和教程,确保您能轻松…

智能穿戴领域,健康鞋步力宝品牌引领新商业模式发展

智能时代正在将我们带向一个从学习驱动到全面普及的新境界。这个趋势的深远影响不仅改变了我们的生活方式,更改变了我们对智能的理解。当今的智能穿戴,已经越来越成为更多人日常生活的必需品,不论是日常佩戴无感成为腕上伴侣,还是…

【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)

解决方法直达 问题描述 使用 Java 的 Scanner 类来读取数据的时候容易遇到的一个坑是 nextLine() 莫名其妙地就无法使用了。 具体表现为:好像 nextLine() 没执行就直接返回空字符串了。 例如 Scanner scanner new Scanner(System.in); System.out.println(&quo…

【three.js】简介和本地部署

跟着b站大佬学习three.js,让你实现3d前沿技术不是梦! 由于访问three.js官网是国外的网站,非常慢Three.js – JavaScript 3D Library 因此我们可以访问b站大佬在国内搭建好的本地three.js官网,大家访问如下链接即可,…

git项目删除业务代码、并清除所有提交记录,以此为基础创建出一个干净仓库、再另建一个远程代码库推上去

1、先把项目的.git文件夹删除,里面全是之前项目的提交记录 2、在本地项目地址启动git Bash Here后 执行命令 git remote add origin 远程仓库地址 注意后面接的是远程仓库地址 远程仓库要提前把代码块建好 3、如果出现报错:Updates were rejected because the remote conta…

论文阅读--On optimization methods for deep learning

深度学习的优化方法研究 论文信息:Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. …

JAVA NIO深入剖析

4.1 Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方…