本文主要是介绍STM32 | 方式1:手机发送指令,开发板向手机发送温湿度;方式2:手机发送指令,开发板定时向手机发送温湿度。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
01、知识回顾
STM32 | HC-SR04 超声波测距模块 | DHT11数字温湿度传感器(第七天) |
STM32 | 数字温湿度传感器DHT11 |
STM32 | HC-SR04 超声波测距模块 |
STM32 | DHT11数字温湿度传感器实战 |
STM32 | 超声波实战 |
02、作业1
1、通过手机的两方式获取温湿度.
方式1:手机发达指令,开发板向手机发送温湿度;
方式2:手机发达指令,开发板定时向手机发送温湿度。
03、延时外设SysTick
SysTick是指ARM Cortex-M微控制器中的一个系统定时器。它是一个内置的系统定时器,通常用于实现微秒级的延时、定时器中断和系统节拍等功能。SysTick定时器具有以下特点:
1. **精确性**:SysTick定时器是硬件级别的定时器,具有非常高的精度和稳定性,适用于精确的定时和延时操作。
2. **灵活性**:SysTick定时器可以通过软件进行配置和控制,包括预分频、周期设置等,具有一定的灵活性,可以适应不同的应用场景。
3. **低功耗**:SysTick定时器通常使用CPU的时钟作为时钟源,因此在低功耗应用中可以有效地利用系统资源。
4. **易用性**:SysTick定时器的配置和使用相对简单,通常只需配置预分频和周期即可实现所需的定时功能,适用于嵌入式系统和实时操作系统。
//头文件
#ifndef __DELAY_H
#define __DELAY_H
#include "stm32f4xx.h"
void Delay_Init(void);
void delay_us(u32 nus);
void delay_ms(u32 nms);
void delay_s(u32 ns);
#endif
//源文件
#include "delay.h"
//u32 == unsigned int
u32 my_us = 21; //计21个数用1us
u32 my_ms = 21000; //计21000个数用1ms
void Delay_Init(void)
{
//SysTick时钟配置 168MHZ/8 = 21MHZ
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
}
//nus取值范围:1~798 915
void delay_us(u32 nus)
{
u32 temp = 0;
//设置重装值寄存器
SysTick->LOAD = my_us*nus - 1;
//设置计数器的值为0
SysTick->VAL = 0x00;
//开启定时器
SysTick->CTRL |= (0x01<<0);
do
{
temp = SysTick->CTRL;
//判断定时是否关闭 //判断SysTick->CTRL第16位是否为1
}while((temp&(0x01<<0)) && (!(temp & (0x01<<16))));
//关闭定时器
SysTick->CTRL &= ~(0x01<<0);
}
//nms取值范围:1~798
void delay_ms(u32 nms)
{
u32 temp = 0;
//设置重装值寄存器
Sy
这篇关于STM32 | 方式1:手机发送指令,开发板向手机发送温湿度;方式2:手机发送指令,开发板定时向手机发送温湿度。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!