STM32F407之超声波模块使用

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "includes.h"
#include "HC_SR04.h"int main()
{OS_ERR err;//错误uart_init(9600);//串口初始化//超声波初始化HC_SR04();//OS初始化 他是第一个运行的函数 初始化各种变量各种全局变量 列如 中断嵌套 优先级 存储器等OSInit(&err);//创建任务1OSTaskCreate(	(OS_TCB *)&HC_SR04_TCB,									//任务控制块,等同于线程id(CPU_CHAR *)"HC_SR04",									//任务的名字,名字可以自定义的(OS_TASK_PTR)HC_SR04_Init,								//任务函数,等同于线程函数(void *)0,												//传递参数,等同于线程的传递参数(OS_PRIO)6,											 	//任务的优先级6		(CPU_STK *)HC_SR04_STK,									//任务堆栈基地址(CPU_STK_SIZE)128/10,									//任务堆栈深度限位,用到这个位置,任务不能再继续使用(CPU_STK_SIZE)128,										//任务堆栈大小			(OS_MSG_QTY)0,											//禁止任务消息队列(OS_TICK)0,												//默认时间片长度																(void  *)0,												//不需要补充用户存储区(OS_OPT)OS_OPT_TASK_NONE,								//没有任何选项&err													//返回的错误码);//启动OS,进行任务调度OSStart(&err);}
#include "HC_SR04.h"
#include "delay.h"
#include "usart.h"
/*引脚PB12 TRIG 输出模式PB13 ECHO 输入模式*/
#define TRIG_SET(x)  (x)?GPIO_SetBits(GPIOB,GPIO_Pin_12):GPIO_ResetBits(GPIOB,GPIO_Pin_12)
//#define ECHO_READ GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)
#define  ECHO_READ    GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)
static GPIO_InitTypeDef  GPIO_InitStructure;void HC_SR04(void)
{//启用GPIO时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//给引脚PB2 TRIG 配置输出模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  		//输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  	// 推挽GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; 	//速率GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;  	//无拉//给PB13引脚配置输入模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;        //输入模式GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;  	//无拉GPIO_Init(GPIOB, &GPIO_InitStructure);TRIG_SET(0);}//获取数据模块自动发送8bit
uint8_t Get_Data(void)
{uint8_t cnt = 0;TRIG_SET(1);//发送数据高电平delay_us(15);//至少延迟10usTRIG_SET(0);//停止发送while(ECHO_READ == 0);//等待高电平出现while(ECHO_READ == 1)//高电平出现{/*声速340m/s340m= 340*100cm = 340*100*10mm			3mm--------------------------------------- = ----------1s = 1000ms = 1000000us					?  = 8.8us*/delay_us(9);//为什么要延迟9us   cnt++;}//计算出来的距离则要/2cnt= cnt/2;return cnt;
}//-----------------------------------------------------------
//操作系统任务块
//任务块
OS_TCB HC_SR04_TCB;void HC_SR04_Init(void *parg);//函数名称CPU_STK HC_SR04_STK[128]; //任务堆栈 大小128 也就是512void HC_SR04_Init(void *parg)
{uint8_t distance = 0;while(1){	distance = Get_Data();printf("distance is %d mm\n",distance);delay_ms(1000);}}
#ifndef __HC_SR04_H
#define __HC_SR04_H 			   
#include "stm32f4xx.h"
#include "includes.h"
void HC_SR04(void);
uint8_t Get_Data(void);//任务块
extern OS_TCB HC_SR04_TCB;extern void HC_SR04_Init(void *parg);//函数名称extern CPU_STK HC_SR04_STK[128]; //任务堆栈 大小128 也就是512
#endif

 

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

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

相关文章

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要:本次升级支持联邦应用跨集群滚动升级,使用户版本发布流程更加灵活可控;透明同事karmadactl 新增了多项运维能力,提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布!新增应用跨集群滚动升…

nfs版本问题导致挂载失败

一、系统环境 环境版本操作系统Linux Mint 22 Wilma内核版本6.8.0-44-genericgcc 版本arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025uboot 版本2020.01开发板Linux版本5.4.31 二、问题描述 内核通过…

Unity开发绘画板——03.简单的实现绘制功能

从本篇文章开始,将带着大家一起写代码,我不会直接贴出成品代码,而是会把写代码的历程以及遇到的问题、如何解决这些问题都记录在文章里面,当然,同一个问题的解决方案可能会有很多,甚至有更好更高效的方式是…

微信小程序——引入 iconfont 矢量图标,如何使用引用阿里巴巴矢量图标

本文介绍如何在小程序中加入图标,效果如下图: 1、访部iconfont-阿里巴巴矢量图标库 找到需要的图标,然后添加入库 将增加好的图标添加到项目中 2、点击更新生成代码 生成后如下图 3、打开生成的css样式文件 4、在小程序中新建/static/iconfon…

AI大模型助力数据消费,构建数据飞轮科学、高效的体系

随着互联网的技术高速发展,越来越多的应用层出不穷,伴随着数据应用的需求变多,为快速响应业务需求,很多企业在初期没有很好的规划的情况下,存在不同程度的烟囱式的开发模式,这样会导致企业不同业务线的数据…

**CentOS7安装redis**

CentOS7安装redis 首先解压压缩包 redis-7.0.0.tar.gz tar -xvf redis-7.0.0.tar.gz接着进入到redis中 cd redis-7.0.0.tar.gz执行make命令编译 make接着执行安装命令 make install之后编译安装完后 程序都会在/usr/local/bin目录下 这里需要将在redis目录中redis.conf配置…

Kubernetes从零到精通(14-Storage)

存储简介 在Kubernetes中,存储是一个关键的部分,用于持久化应用程序的数据。Kubernetes的存储模型支持多种存储类型,并且能根据应用程序的需求动态地提供存储资源。以下是Kubernetes存储的基本概念和机制。 Kubernetes支持很多类型的卷。Pod可…

【Java面向对象高级一08】继承_使用继承的好处

前言 一、继承是什么? 二、使用继承的好处 总结 前言 继承的学习 一、继承是什么? Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。extends(中文意思就是继承)。 继承的意思是&#xf…

Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式

Redis作为一个高性能的key-value数据库,广泛应用于缓存、消息队列、排行榜等场景。然而,Redis是基于内存的数据库,这意味着一旦服务器宕机,内存中的数据就会丢失。为了解决这个问题,Redis提供了数据持久化的机制&#…

C语言 | Leetcode C语言题解之第434题字符串中的单词数

题目&#xff1a; 题解&#xff1a; int countSegments(char * s){int count 0; //count用来记录单词个数for(int i0; i < strlen(s); i){ //遍历字符串 if((i 0 || s[i-1] ) && s[i] ! ) //一个…

Python | Leetcode Python题解之第434题字符串中的单词数

题目&#xff1a; 题解&#xff1a; class Solution:def countSegments(self, s):segment_count 0for i in range(len(s)):if (i 0 or s[i - 1] ) and s[i] ! :segment_count 1return segment_count

【计网】从零开始掌握序列化 --- 实现网络计算器项目

​​​请各位保持头脑清醒&#xff0c; ​​​读些好书&#xff0c;做点有用的事&#xff0c; ​​​快快乐乐地生活。 ​​​ --- 斯蒂芬金 《肖申克的救赎》--- 从零开始掌握序列化 1 知识回顾2 服务器框架3 客户端框架4 运行测试 1 知识回顾 前面两篇文章学习中基础知识…

ROS第六梯:ROS+VSCode+C++消息发布和订阅

第一步&#xff1a;创建ROS工作空间&#xff0c;并在工作空间下创建名为srr_pkg的功能包&#xff0c;具体步骤参考第二章。 第二步&#xff1a;在src下创建publisher.cpp作为发布节点代码文件&#xff0c;创建subscriber.cpp作为订阅节点代码文件&#xff1a; 主要步骤是&#…

数字通云平台智慧政务 login 存在登录绕过

0x01 漏洞描述&#xff1a; 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术&#xff0c;为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平&#xff0c;推动电子政务向更高层次发展。 数字通云平台 智…

【高分系列卫星简介——高分五号卫星(GF-5)】

高分五号卫星&#xff08;GF-5&#xff09; 高分五号&#xff08;GF-5&#xff09;卫星是中国高分辨率对地观测系统重大专项系列中的一颗重要卫星&#xff0c;主要承担着遥感、测绘等任务。以下是对高分五号卫星的详细介绍&#xff1a; 一、基本信息 国籍&#xff1a;中国研…

Android JNI 调用流程

为啥要用JNI&#xff0c;我个人理解是&#xff0c;Java 代码效率不够高&#xff0c;代码调用底层逻辑隔着一层Java 虚拟机&#xff0c;不能直接操控底层硬件&#xff0c;而C/C 可以直接操控硬件设备&#xff0c;对于需要效率更高的操作&#xff0c;就需要通过C/C 完成。。 比如…

GNU链接器(LD):存储命令(MEMORY)用法及实例解析

0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分&#xff1a; &#xff08;1&#xff09;编译器 &#xff08;2&#xff09;汇编器 &#xff08;3&#xff09;链接器 &#xff08;4&#xff09;lib库 在GNU工具链中&…

最小花费爬楼梯(动态规划)问题

目录 一题目&#xff1a; 二思路&#xff1a; 三代码&#xff1a; 一题目&#xff1a; 最小花费爬楼梯_牛客题霸_牛客网 二思路&#xff1a; 思路&#xff1a;动态规划找前后规律化简题意&#xff1a;此题想要的结果其实就是能上到顶楼也就是&#xff1a; 分为&#xff1…

【华为】用策略路由解决双出口运营商问题

需求描述 不同网段访问互联网资源时&#xff0c;走不同的出口&#xff0c;即PC1走电信出口&#xff0c;PC2走移动出口。 客户在内网接口下应用策略路由后往往出现无法访问内网管理地址的现象&#xff0c;该举例给出解决办法。 拓扑图 基础配置 #sysname R1 # # interface G…

QT 中的信号与槽机制详解

目录 一、引言 二、信号与槽的基本概念 1.信号&#xff08;Signals&#xff09; 2.槽&#xff08;Slots&#xff09; 三、声明信号和槽 1.声明信号和槽 2.发射信号 3.连接信号和槽 四、高级特性 1.多信号连接到一个槽 2.一个信号连接到多个槽 3.断开信号和槽的连…