主函数:
/* USER CODE BEGIN 1 */
printf("this is uart4 test!!!!!\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
/* USER CODE END 1 */
uart:
/* USER CODE BEGIN 1 */
int fputc(int ch,FILE* stream)
{
//判断发送寄存器是否为空
while(!(huart4.Instance->ISR & (0x1 << 7)));
//将要发送的数据放入到发送寄存器中
huart4.Instance->TDR = ch;
//判断是否为'\n'
if(ch == '\n')
{
//判断发送寄存器是否为空
while(!(huart4.Instance->ISR & (0x1 << 7)));
huart4.Instance->TDR = '\r';
}
return ch;
}
/* USER CODE END 1 */
gpio:
/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
printf("RISING!\n");
switch(GPIO_Pin)
{
case GPIO_PIN_5: // 火焰 ---> PF5
printf("flame!\n");
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10,GPIO_PIN_SET);
HAL_Delay(500);
break;
case GPIO_PIN_12: // 人体红外 ---> PF12
printf("infrared!\n");
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10,GPIO_PIN_SET);
HAL_Delay(500);
break;
case GPIO_PIN_15: // 光电传感器---> PE15
printf("raster!\n");
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(500);
break;
}
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
printf("FALLING!\n");
switch(GPIO_Pin)
{
case GPIO_PIN_7:
printf("this is key2!\n");
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10,GPIO_PIN_SET);
break;
case GPIO_PIN_8:
printf("this is key3!\n");
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8,GPIO_PIN_SET);
break;
case GPIO_PIN_9:
printf("this is key1!\n");
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10,GPIO_PIN_SET);
break;
}
}
/* USER CODE END 2 */