目录
一,通过STMCube配置项目
1.引脚配置如图
2.配置EXIT
3.代码创建勾选
一,通过STMCube配置项目
1.引脚配置如图
2.配置EXIT
3.代码创建勾选
4.找到 EXTI9_5_IRQHandler 这个函数,右键HAL_GPIO_EXTI_IRQHandler 这个语句,选择 Go to Definition of ’ … ,或者是直接按F12跳到该函数
将该函数替换成下面这一段代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == SWITCH_Pin){ //获取B5的电位 GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin); //低电位 if(pinState==GPIO_PIN_RESET) HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);//把A5变为低电位,灯灭 //高电位 else HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);//把A5变为高电位,灯亮 } }
烧录
创建hex文件输入以下代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123#include "main.h" #include "usart.h" #include "gpio.h" #include <string.h> void SystemClock_Config(void); char c;//指令 0:停止 1:开始 char message[]="hello Windowsn";//输出信息 char tips[]="CommandErrorn";//提示1 char tips1[]="Start.....n";//提示2 char tips2[]="Stop......n";//提示3 int flag=0;//标志 0:停止发送 1.开始发送 int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); //设置接受中断 HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1); //当flag为1时,每秒发送一次信息 //当flag为0时,停止 while (1) { if(flag==1){ //发送信息 HAL_UART_Transmit(&huart1, (uint8_t *)&message, strlen(message),0xFFFF); //延时 HAL_Delay(1000); } } } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { //当输入的指令为0时,发送提示并改变flag if(c=='0'){ flag=0; HAL_UART_Transmit(&huart1, (uint8_t *)&tips2, strlen(tips2),0xFFFF); } //当输入的指令为1时,发送提示并改变flag else if(c=='1'){ flag=1; HAL_UART_Transmit(&huart1, (uint8_t *)&tips1, strlen(tips1),0xFFFF); } //当输入不存在指令时,发送提示并改变flag else { flag=0; HAL_UART_Transmit(&huart1, (uint8_t *)&tips, strlen(tips),0xFFFF); } //重新设置中断 HAL_UART_Receive_IT(&huart1, (uint8_t *)&c, 1); } /* USER CODE END 4 */ /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ }
打开串口通讯窗口进行测试
最后
以上就是拉长蜜蜂最近收集整理的关于中断及串口通信一,通过STMCube配置项目 2.配置EXIT的全部内容,更多相关中断及串口通信一,通过STMCube配置项目 2内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复