以下是使用USART串口输出GY-39传感器数据的代码,可以通过串口打印出气压、温度、光强和湿度数据:
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_i2c.h"
#include "stm32f4xx_usart.h"
#include "stdio.h"
#define GY39_ADDRESS 0x5C 参考数据手册进行修改
#define USARTx USART1
#define USARTx_CLK RCC_APB2Periph_USART1
#define USARTx_TX_PIN GPIO_Pin_9
#define USARTx_TX_GPIO_PORT GPIOA
#define USARTx_TX_GPIO_CLK RCC_AHB1Periph_GPIOA
#define USARTx_TX_SOURCE GPIO_PinSource9
#define USARTx_TX_AF GPIO_AF_USART1
#define USARTx_BAUDRATE 9600
#define USARTx_IRQn USART1_IRQn
#define USARTx_IRQHandler USART1_IRQHandler
void delay(uint32_t ms){
ms *= 3360;
while(ms--){
__NOP();
}
}
串口的初始化,也可以不用,可直接用正点原子f4模板
void USARTx_Configuration(void){
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIO clock */
RCC_AHB1PeriphClockCmd(USARTx_TX_GPIO_CLK, ENABLE);
/* Enable USART clock */
RCC_APB2PeriphClockCmd(USARTx_CLK, ENABLE);
/* Connect PXx to USARTx_Tx*/
GPIO_PinAFConfig(USARTx_TX_GPIO_PORT, USARTx_TX_SOURCE, USARTx_TX_AF);
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = USARTx_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure);
/* USARTx configuration *