一、HAL库中断点亮LED灯
1.建项目部分
1.新建项目
file->new project
2.选择芯片
选择STM32F103C8
3.找到PA9,选择为GPIO——EXTI5中断模式
4.选择PA1设置为GPIO_Output
输出模式
5.设置引脚
PA1设置high
6.设置RCC和SYS
7,设置开启中断
8.设置时钟树
9.项目命名,然后生成项目
2、代码部分
在main.c添加
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1); //翻转电平
/* NOTE: This function Should not be modified, when the callback is needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
}
3.运行结果
二、HAL库中断串口通信
1.项目
1.新建项目并设置usart1
设置sys和rcc(与以上一样)
2. 设置USART1使能中断
3.重复设置时钟树,项目命名。然后生成项目
2.代码部分
1.在main.c代码中添加
#define LENGTH 10 // 接收缓冲区大小
//定义缓冲区和标志位
uint8_t RxBuffer[LENGTH]; // 接收缓冲区
uint8_t Rxflag = 0; // 标志位,0为接收未完成,1为接
2.在while中添加
if (Rxflag == 1){ // 若数据接收完成
Rxflag = 0; // 清除标志位
HAL_UART_Transmit(&huart1, (uint8_t *)RxBuffer, 18, 0xFFFF); // 接收成功信息
// 发送接收到的字符
HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}
3.在main.c中定义回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
Rxflag = 1; // 设置标志位为1
HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH); // 使能接收中断
}
}