stm32项目实战一之智能小屋(二)

#stm32#printf函数快速实现#DHT11模块的实现

在编写c时候,我们可以直接调用“printf”,因为此输出功能已经被人封装在c代码的头文件中。而在keil编写单片机程序时候,printf语句也起着重要作用,通过串口输出功能,能实现printf的多种巧用,可起代码调试功能。

第一步:

在主函数添加此函数,并在主函数上进行申明

#include "sys.h"
void My_USART1(void);
int main(void)
{
		u8 temper;  	    
		u8 humi;
		u8 temp;
		delay_init();
		My_USART1();
		DHT11_Init();
		while(1)			
		{
			temp = DHT11_Read_Data(&temper,&humi);
			if(temp ==0)
			{
				printf("temperature is %d\r\n",temper);
				printf("humidity is %d\r\n",humi);
				delay_ms(1000);
			}		
		};
}
void My_USART1()
{  
    GPIO_InitTypeDef GPIO_InitStruct;
    USART_InitTypeDef USART1_InitStrue;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1, ENABLE);
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;//PA9
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;    
    GPIO_Init(GPIOA, &GPIO_InitStruct);
    
    GPIO_InitStruct.GPIO_Pin =GPIO_Pin_10;//PA10
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
    GPIO_Init(GPIOA, &GPIO_InitStruct);    
    
    USART1_InitStrue.USART_BaudRate = 9600;
    USART1_InitStrue.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART1_InitStrue.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
    USART1_InitStrue.USART_Parity = USART_Parity_No;
    USART1_InitStrue.USART_StopBits=USART_StopBits_1;
    USART1_InitStrue.USART_WordLength = USART_WordLength_8b;    
    USART_Init( USART1, &USART1_InitStrue);
    USART_Cmd(USART1,ENABLE);    
}

int fputc(int ch, FILE *f)
{      
        USART_SendData(USART1, (uint8_t) ch);            
        while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);            
        return (ch);
}

第二部:在.h文件中添加申明#include“stdio.h”

第三步:勾选Use MicroLIB

实现上面三步后即可快速实现printf函数功能,打开串口助手即可获取你想要输出的字符,我上诉代码则实现了DHT11模块读取的温湿度数值进行输出。在主函数调用的头文件中进行DHT11文件的调用(#include “DHT11.h”)。此处应用指针取地址的方式读取出数值。

注意:在主函数中,如要调用哪些函数,第一步要进行初始化函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值