电平翻转和写引脚
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_1);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,GPIO_PIN_SET);
可变延时
void Delay(unsigned int t)
{
while(t--);
若为低电平
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_15)==RESET )
中断函数
如果中断是15脚就电平翻转
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_15)
{
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_1);
}
}
串口
实现hello world
uint8_t Tx_str1[]="hello world!\r\n";//定义字符串一helloworld
HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);
实现指令0xA1打开LED1,并发送LED1 OPEN
uint8_t Tx_str2[]="LED1 Open!\r\n";//定义字符串二
uint8_t Tx_str3[]="LED1 Close!\r\n";//定义字符串三
uint8_t Rx_dat =0;//定义函数
huart是指向串口句柄的指针。Instance是串口的实例号
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)这句定义前面不能改
{
if(huart->Instance == USART1)//询问串口是否是串口一 huart是指向串口句柄的指针。Instance是串口的实例号
{
if(Rx_dat==0xA1)//询问Rx函数的内容是不是0xA1
{
LED1_OFF();
LED2_ON();//
HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),10000);
//发送字符串(串口一,字符串2,字符串长度,时间)
LED2_OFF();
}
else if(Rx_dat==0xA2)
{
LED1_ON();
LED2_ON();
HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),10000);
LED2_OFF();
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
}
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
}
HAL_UART_Receive_IT(&huart1,&Rx_dat,1); //接收一个字节到Rx_dat中
写在while(1)里,否则接收不到信号
第一步,初始化时使能串口中断
MX_USART1_UART_Init();
第二步,重点,在主循环前开启接收中断HAL_UART_Receive_IT(&huart2, (uint8_t *)rx_buf,1);这是接收1个字节到rx_buf中
HAL_UART_Receive_IT(&huart1,&Rx_dat,1);