编写自己的.h和.c文件(STM32)

编写自己的.h和.c文件(STM32)

1.新建一个存放自己程序的文件夹–MY

红色

在这里插入图片描述
选中工程名,右键
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.在自己的工程文件夹中也新建一个MY文件夹

在这里插入图片描述

3.在MY文件夹中新建功能所对应的文件夹名称(如:KEY、LED、MPU6050、PWM)在这里插入图片描述

4.新建key.c和key.h文件,保存到没MY文件夹下的KEY中

在这里插入图片描述

5.将.c文件加入到工程

在这里插入图片描述
在这里插入图片描述

6.key.c和key.h

在这里插入图片描述
在这里插入图片描述

7.将.h文件路径加载到工程

在这里插入图片描述
在这里插入图片描述

8.编译一下

在这里插入图片描述

9.看一下MY文件夹

在这里插入图片描述

  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的DS18B20读取温度值的代码示例,其中使用了STM32F10x标准库函数。需要注意的是,这里使用了单总线模式,即将DS18B20的数据线与STM32的GPIO口相连,没有使用额外的硬件电路。 ds18b20.h文件: ```c #ifndef __DS18B20_H #define __DS18B20_H #include "stm32f10x.h" #define DS18B20_GPIO_PORT GPIOA #define DS18B20_GPIO_PIN GPIO_Pin_0 float DS18B20_GetTemperature(void); #endif /* __DS18B20_H */ ``` ds18b20.c文件: ```c #include "ds18b20.h" /* DS18B20复位 */ static void DS18B20_Reset(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DS18B20_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); GPIO_ResetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(500); GPIO_SetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(80); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); } /* 发送字节数据 */ static void DS18B20_WriteByte(uint8_t data) { uint8_t i = 0; GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DS18B20_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); for (i = 0; i < 8; i++) { if ((data >> i) & 0x01) { GPIO_ResetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(1); GPIO_SetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(80); } else { GPIO_ResetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(80); GPIO_SetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(1); } } GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); } /* 读取字节数据 */ static uint8_t DS18B20_ReadByte(void) { uint8_t i = 0, data = 0; GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DS18B20_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); for (i = 0; i < 8; i++) { GPIO_ResetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(4); GPIO_SetBits(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN); delay_us(10); if (GPIO_ReadInputDataBit(DS18B20_GPIO_PORT, DS18B20_GPIO_PIN)) { data |= 0x01 << i; } delay_us(50); } GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(DS18B20_GPIO_PORT, &GPIO_InitStructure); return data; } /* 获取温度值 */ float DS18B20_GetTemperature(void) { uint8_t temp_l = 0, temp_h = 0; float temperature = 0.0; DS18B20_Reset(); DS18B20_WriteByte(0xCC); DS18B20_WriteByte(0x44); delay_ms(800); DS18B20_Reset(); DS18B20_WriteByte(0xCC); DS18B20_WriteByte(0xBE); temp_l = DS18B20_ReadByte(); temp_h = DS18B20_ReadByte(); temperature = (float)((int16_t)(temp_h << 8 | temp_l)) / 16.0; return temperature; } ``` 其中,delay_us和delay_ms函数为延时函数,需要自行实现。可以参考下面的示例: ```c void delay_us(uint32_t time) { uint32_t i = 0; for (i = 0; i < time * 8; i++); } void delay_ms(uint32_t time) { uint32_t i = 0; for (i = 0; i < time * 8000; i++); } ``` 此外,需要在主函数中调用库函数GPIO_Init和RCC_APB2PeriphClockCmd等函数初始化STM32的GPIO口和时钟。具体使用方法可以参考STM32F10x官方文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值