STM32F407使用串口3获取攀腾G7的PM2.5数据

STM32F407使用该程序主要是复用串口3用来接收PM2.5所发出的数据,然后获取所需要的pm2.5的值,引脚接口为pb11和pb10,5v电压。

u8 USART3_RX_BUF[USART3_REC_LEN];
u16 USART3_RX_STA=0; 
u16 flag3=0;
void uart3_init(u32 bound){
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);

    GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3);
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; 
    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(GPIOB,&GPIO_InitStructure);
    USART_InitStructure.USART_BaudRate = bound;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    
    USART_Init(USART3, &USART_InitStructure);    
    USART_Cmd(USART3, ENABLE); 
    
#if EN_USART3_RX    
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         
    NVIC_Init(&NVIC_InitStructure);   

#endif
    
}
u8 Res;
void USART3_IRQHandler(void)                
{
    u16 t=0;

    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  
    {
    
        Res =USART_ReceiveData(USART3);  
        USART3_RX_BUF[USART3_RX_STA++]=Res ;
        if(USART3_RX_STA == 32){
                flag3 = 1;
                USART3_RX_STA = 0;
  } 
}

在main函数中:

int main(void)
{
    u16 pm25;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	delay_init(168);	
	uart3_init(9600);	 
	uart_init(115200);
  while(1){
		if(flag3){
                pm25 = USART3_RX_BUF[6] * 100 + USART3_RX_BUF[7];
				printf("pm2.5:%d\n",pm25);
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
				delay_ms(1000);
			flag3 = 0;
		}
	}
}

在此模块中传出的数据一共有32位,第6位和第7位数据为pm2.5的数据。6为高位,7为低位

STM32F407是STMicroelectronics生产的一款高性能32位微控制器(MCU),属于STM32F4系列。STM32F4系列是一系列基于ARM Cortex-M4内核的MCU,提供了丰富的外设和性能,适用于各种嵌入式系统应用。以下是有关STM32F407的一些关键特点和信息:

  1. 处理器核心:STM32F407系列基于ARM Cortex-M4内核,具有高性能的32位处理能力,支持单周期的乘法和硬件除法,以及浮点运算单元(FPU)。

  2. 时钟和工作频率:STM32F407系列提供了多个时钟源和频率设置选项,可运行在最高168 MHz的工作频率。

  3. 存储器:STM32F407系列具有不同容量的Flash存储器(通常为1MB)和SRAM(通常为192KB)。Flash存储器可用于存储程序代码,SRAM可用于数据存储。

  4. 外设:该系列包含多种外设,如通用定时器、高级控制定时器、USART、SPI、I2C、USB OTG、以太网控制器等,以满足各种应用需求。

  5. 模拟接口:STM32F407 MCU包括模拟接口,如ADC(模数转换器)和DAC(数模转换器),可用于模拟信号采集和生成。

  6. 通信接口:STM32F407支持多种通信接口,包括UART、SPI、I2C等,适用于连接外部设备和通信。

  7. 电源管理:具有多种低功耗模式,可最小化功耗,适合电池供电的应用。

  8. 安全性:提供硬件加密和解密功能,用于加密存储和通信的数据。

  9. 开发工具:STMicroelectronics提供了各种开发工具和环境,如STM32CubeMX和STM32CubeIDE,以简化STM32F407系列的开发。

  10. 外部接口:STM32F407 MCU通常包括多个GPIO引脚,用于连接外部设备和传感器。

  11. 操作温度范围:通常,STM32F407 MCU具有广泛的操作温度范围,适用于工业和商业应用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮若于心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值