Ich habe hier ein kleines Programm das über den Timer alle Sekunde eine
Messung starten soll. Dazu benutze ich den TIM14 das Programmskelett
wurde mit CubeMX erzeugt. Time.c initialisiert den Timer und der
Interrupthandler
steckt in stm32f4xx_it.c. In meinem Code starte ich den Timer
mit SET_BIT(TIM14->CR1, 1); Aber es kommt kein Interrupt an.
Kann mit vieleicht jemand auf die Schnelle sagen ob da noch was fehlt
oder wie ich unter Atollic Studio den SFR-Register View zum Laufen
bekomme ?
1 | // tim.c
|
2 |
|
3 | void MX_TIM14_Init(void)
|
4 | {
|
5 |
|
6 | htim14.Instance = TIM14;
|
7 | htim14.Init.Prescaler = 8400;
|
8 | htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
|
9 | htim14.Init.Period = 10000;
|
10 | htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
11 | htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
12 | if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
|
13 | {
|
14 | Error_Handler();
|
15 | }
|
16 |
|
17 | }
|
18 |
|
19 | void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
20 | {
|
21 |
|
22 | if(tim_baseHandle->Instance==TIM14)
|
23 | {
|
24 | /* USER CODE BEGIN TIM14_MspInit 0 */
|
25 |
|
26 | /* USER CODE END TIM14_MspInit 0 */
|
27 | /* TIM14 clock enable */
|
28 | __HAL_RCC_TIM14_CLK_ENABLE();
|
29 |
|
30 | /* TIM14 interrupt Init */
|
31 | HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 0, 0);
|
32 | HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn);
|
33 | /* USER CODE BEGIN TIM14_MspInit 1 */
|
34 |
|
35 | /* USER CODE END TIM14_MspInit 1 */
|
36 | }
|
37 | }
|
38 |
|
39 |
|
40 | // stm32f4xx_it.c
|
41 | void TIM8_TRG_COM_TIM14_IRQHandler(void)
|
42 | {
|
43 | /* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 0 */
|
44 | TDC_TIM_MeasureStart();
|
45 | /* USER CODE END TIM8_TRG_COM_TIM14_IRQn 0 */
|
46 | HAL_TIM_IRQHandler(&htim14);
|
47 | /* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 1 */
|
48 |
|
49 | /* USER CODE END TIM8_TRG_COM_TIM14_IRQn 1 */
|
50 | }
|