STM32F407IGT6单片机 HC-SR501人体红外感应模块(串口屏显示)KEIL软件工程源码,
int main(void)
{
uint8_t state;
/* 复位所有外设,初始化Flash接口和系统滴答定时器 */
HAL_Init();
/* 配置系统时钟 */
SystemClock_Config();
/* 初始化串口并配置串口中断优先级 */
MX_DEBUG_USART_Init();
HMI_USARTx_Init();
/* 初始化LED */
LED_GPIO_Init();
HC_SR501_GPIO_Init();
/* 无限循环 */
while (1)
{
state=HC_SR501_StateRead();
switch(state)
{
case HC_SR501_LOW:
HMI_string_setting("page1.t1.txt=\"无人\"");
break;
case HC_SR501_HIGH:
HMI_string_setting("page1.t1.txt=\"有人\"");
break;
}
}
}
/**
* 函数功能: 向串口屏发送数据
* 输入参数: 无
* 返 回 值: 无
* 说 明: 无
*/
void HMI_value_setting(const char *val_str,uint32_t value)
{
uint8_t tmp_str[30]={0};
uint8_t i;
sprintf((char *)tmp_str,"%s=%d",val_str,value);
for(i=0;iDR=tmp_str[i];
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}
/**
* 函数功能: 向串口屏发送浮点数据
* 输入参数: 无
* 返 回 值: 无
* 说 明: 无
*/
void HMI_string_setting(const char *val_str)
{
uint8_t tmp_str[50]={0};
uint8_t i;
sprintf((char *)tmp_str,val_str);
for(i=0;iDR=tmp_str[i];
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}