Bonjour à tous,
J'essai de bidouiller avec STCubeIde pour faire clignoter la led intégrée sur PA5 avec les interruptions. Lorsque je complile le programme , j'ai une erreur de déclaration du TIMER 2;
Voilà le code et en dessous le rapport d'erreur... j'ai beau fouiller , je ne sais pas pourquoi ? C'est la ligne soulignée qui pose problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include "main.h" // Variables globales volatile uint8_t led_state = 0; TIM_HandleTypeDef htim2; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_TIM2_Init(void); int main(void) { HAL_TIM_Base_Start_IT(&htim2); HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM2_Init(); // Démarrage du timer en mode interruption while (1) { // Boucle principale vide, tout est géré par les interruptions } } void SystemClock_Config(void) { // Configuration de l'horloge système // Générée par STM32CubeMX } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; // Activation des horloges GPIO __HAL_RCC_GPIOA_CLK_ENABLE(); // Configuration de PA5 en sortie pour la LED GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } static void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 7999; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 9999; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { Error_Handler(); } } // Gestionnaire d'interruption du timer void TIM2_IRQHandler(void) { HAL_TIM_IRQHandler(&htim2); } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM2) { // Inversion de l'état de la LED led_state = !led_state; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, led_state ? GPIO_PIN_SET : GPIO_PIN_RESET); } }
RAPPORT D'ERREUR
Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
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 11:33:02 **** Incremental Build of configuration Debug for project led_clignot_1s_interrupt **** make -j6 all arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m0 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F072xB -c -I../Core/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o" arm-none-eabi-gcc "../Core/Src/stm32f0xx_it.c" -mcpu=cortex-m0 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F072xB -c -I../Core/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc -I../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/stm32f0xx_it.d" -MT"Core/Src/stm32f0xx_it.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/stm32f0xx_it.o" ../Core/Src/main.c:6:1: error: unknown type name 'TIM_HandleTypeDef'; did you mean 'I2C_HandleTypeDef'? 6 | TIM_HandleTypeDef htim2; | ^~~~~~~~~~~~~~~~~ | I2C_HandleTypeDef ../Core/Src/stm32f0xx_it.c: In function 'TIM2_IRQHandler': ../Core/Src/stm32f0xx_it.c:28:5: warning: implicit declaration of function 'HAL_TIM_IRQHandler'; did you mean 'HAL_DMA_IRQHandler'? [-Wimplicit-function-declaration] 28 | HAL_TIM_IRQHandler(&htim2); | ^~~~~~~~~~~~~~~~~~ | HAL_DMA_IRQHandler ../Core/Src/stm32f0xx_it.c:28:25: error: 'htim2' undeclared (first use in this function) 28 | HAL_TIM_IRQHandler(&htim2); | ^~~~~ ../Core/Src/stm32f0xx_it.c:28:25: note: each undeclared identifier is reported only once for each function it appears in make: *** [Core/Src/subdir.mk:34: Core/Src/stm32f0xx_it.o] Error 1 make: *** Waiting for unfinished jobs.... ../Core/Src/main.c: In function 'main': ../Core/Src/main.c:16:9: warning: implicit declaration of function 'HAL_TIM_Base_Start_IT'; did you mean 'HAL_DMA_Start_IT'? [-Wimplicit-function-declaration] 16 | HAL_TIM_Base_Start_IT(&htim2); | ^~~~~~~~~~~~~~~~~~~~~ | HAL_DMA_Start_IT ../Core/Src/main.c: In function 'MX_TIM2_Init': ../Core/Src/main.c:54:3: error: unknown type name 'TIM_ClockConfigTypeDef'; did you mean 'EXTI_ConfigTypeDef'? 54 | TIM_ClockConfigTypeDef sClockSourceConfig = {0}; | ^~~~~~~~~~~~~~~~~~~~~~ | EXTI_ConfigTypeDef ../Core/Src/main.c:55:3: error: unknown type name 'TIM_MasterConfigTypeDef' 55 | TIM_MasterConfigTypeDef sMasterConfig = {0}; | ^~~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:57:8: error: request for member 'Instance' in something not a structure or union 57 | htim2.Instance = TIM2; | ^ ../Core/Src/main.c:58:8: error: request for member 'Init' in something not a structure or union 58 | htim2.Init.Prescaler = 7999; | ^ ../Core/Src/main.c:59:8: error: request for member 'Init' in something not a structure or union 59 | htim2.Init.CounterMode = TIM_COUNTERMODE_UP; | ^ ../Core/Src/main.c:59:28: error: 'TIM_COUNTERMODE_UP' undeclared (first use in this function) 59 | htim2.Init.CounterMode = TIM_COUNTERMODE_UP; | ^~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:59:28: note: each undeclared identifier is reported only once for each function it appears in ../Core/Src/main.c:60:8: error: request for member 'Init' in something not a structure or union 60 | htim2.Init.Period = 9999; | ^ ../Core/Src/main.c:61:8: error: request for member 'Init' in something not a structure or union 61 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | ^ ../Core/Src/main.c:61:30: error: 'TIM_CLOCKDIVISION_DIV1' undeclared (first use in this function) 61 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; | ^~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:62:8: error: request for member 'Init' in something not a structure or union 62 | htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | ^ ../Core/Src/main.c:62:34: error: 'TIM_AUTORELOAD_PRELOAD_DISABLE' undeclared (first use in this function) 62 | htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:63:7: warning: implicit declaration of function 'HAL_TIM_Base_Init' [-Wimplicit-function-declaration] 63 | if (HAL_TIM_Base_Init(&htim2) != HAL_OK) | ^~~~~~~~~~~~~~~~~ ../Core/Src/main.c:67:21: error: request for member 'ClockSource' in something not a structure or union 67 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | ^ ../Core/Src/main.c:67:36: error: 'TIM_CLOCKSOURCE_INTERNAL' undeclared (first use in this function) 67 | sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; | ^~~~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:68:7: warning: implicit declaration of function 'HAL_TIM_ConfigClockSource' [-Wimplicit-function-declaration] 68 | if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:72:16: error: request for member 'MasterOutputTrigger' in something not a structure or union 72 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | ^ ../Core/Src/main.c:72:39: error: 'TIM_TRGO_RESET' undeclared (first use in this function) 72 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; | ^~~~~~~~~~~~~~ ../Core/Src/main.c:73:16: error: request for member 'MasterSlaveMode' in something not a structure or union 73 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | ^ ../Core/Src/main.c:73:35: error: 'TIM_MASTERSLAVEMODE_DISABLE' undeclared (first use in this function) 73 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../Core/Src/main.c:74:7: warning: implicit declaration of function 'HAL_TIMEx_MasterConfigSynchronization'; did you mean 'HAL_TIM_SlaveConfigSynchronization'? [-Wimplicit-function-declaration] 74 | if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | HAL_TIM_SlaveConfigSynchronization ../Core/Src/main.c: In function 'TIM2_IRQHandler': ../Core/Src/main.c:83:3: warning: implicit declaration of function 'HAL_TIM_IRQHandler'; did you mean 'HAL_DMA_IRQHandler'? [-Wimplicit-function-declaration] 83 | HAL_TIM_IRQHandler(&htim2); | ^~~~~~~~~~~~~~~~~~ | HAL_DMA_IRQHandler ../Core/Src/main.c: At top level: ../Core/Src/main.c:86:36: error: unknown type name 'TIM_HandleTypeDef'; did you mean 'I2C_HandleTypeDef'? 86 | void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | ^~~~~~~~~~~~~~~~~ | I2C_HandleTypeDef make: *** [Core/Src/subdir.mk:34: Core/Src/main.o] Error 1 "make -j6 all" terminated with exit code 2. Build might be incomplete. 11:33:03 Build Failed. 23 errors, 6 warnings. (took 995ms)
Partager