1.新建项目
file->new project
2.选择芯片
选择STM32F103C8
3.找到PA9,选择为GPIO——EXTI5中断模式
4.选择PA1设置为GPIO_Output
输出模式
5.设置引脚
PA1设置high
6.设置RCC和SYS
7,设置开启中断
8.设置时钟树
9.项目命名,然后生成项目
在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 */ }
1.新建项目并设置usart1
设置sys和rcc(与以上一样)
2. 设置USART1使能中断
3.重复设置时钟树,项目命名。然后生成项目
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); // 使能接收中断 } }