赞
踩
中断全过程
中断分为同步中断和异步中断:
HAL_GPIO_EXTI_Callback
函数:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
GPIO_PinState b0_pin = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0); // 读取b0的状态
switch (GPIO_Pin){
case GPIO_PIN_0:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, b0_pin); // 将a2写入与b0相同的电位
break;
}
}
3. 编译并烧录
使用mscuip进行烧录
4. 运行结果
Project配置
Code Generator
项目生成
#define LENGTH 10 // 接收缓冲区大小
2. 定义缓冲区和标志位
uint8_t RxBuffer[LENGTH]; // 接收缓冲区
uint8_t Rxflag = 0; // 标志位,0为接收未完成,1为接收完成
3. 定义接收成功信息
HAL_UART_Receive_IT(&huart1, (uint8_t*)RxBuffer, LENGTH); // 使能接收中断
char data[] = "\nReveive Success\n"; // 接收成功信息
if (Rxflag == 1){ // 若数据接收完成
Rxflag = 0; // 清除标志位
HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF); // 接收成功信息
// 发送接收到的字符
HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
Rxflag = 1; // 设置标志位为1
HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH); // 使能接收中断
}
}
6. 编译烧录
7. 运行效果
STM32之中断控制LED灯
STM32中断控制的流程
【嵌入式11】HAL库实验中断开关点灯及串口通信
【STM32CubeMX】HAL库中断方式UART串口通信
HAL库中断方式进行串口通信
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。