stm32f103rct6 MAX6675 HAL库 .c和.h文件
时间: 2024-05-11 18:17:51 浏览: 164
以下是我写的一个简单的使用HAL库的STM32F103RCT6与MAX6675进行SPI通信的例程,包括了.c和.h文件,你可以参考一下:
max6675.h:
```
#ifndef __MAX6675_H
#define __MAX6675_H
#include "stm32f1xx_hal.h"
#define MAX6675_CS_GPIO_Port GPIOA
#define MAX6675_CS_Pin GPIO_PIN_4
void MAX6675_Init(SPI_HandleTypeDef *hspi);
float MAX6675_ReadTemp(SPI_HandleTypeDef *hspi);
#endif /* __MAX6675_H */
```
max6675.c:
```
#include "max6675.h"
SPI_HandleTypeDef *Max6675_hspi;
void MAX6675_Init(SPI_HandleTypeDef *hspi)
{
Max6675_hspi = hspi;
HAL_GPIO_WritePin(MAX6675_CS_GPIO_Port, MAX6675_CS_Pin, GPIO_PIN_SET);
}
float MAX6675_ReadTemp(SPI_HandleTypeDef *hspi)
{
uint8_t buffer[2];
uint16_t temp;
float temperature;
HAL_GPIO_WritePin(MAX6675_CS_GPIO_Port, MAX6675_CS_Pin, GPIO_PIN_RESET);
HAL_SPI_Receive(Max6675_hspi, buffer, 2, 100);
HAL_GPIO_WritePin(MAX6675_CS_GPIO_Port, MAX6675_CS_Pin, GPIO_PIN_SET);
temp = buffer[0] << 8 | buffer[1];
temp >>= 3;
temperature = temp * 0.25;
return temperature;
}
```
在主函数中调用:
```
#include "max6675.h"
int main(void)
{
/* ... */
SPI_HandleTypeDef hspi1;
/* ... */
MAX6675_Init(&hspi1);
float temp = MAX6675_ReadTemp(&hspi1);
/* ... */
}
```
需要注意的是,在使用前需要先初始化SPI外设,可以参考HAL库提供的SPI例程。
阅读全文