trying to toggle output on output compare and in interrupt, not working

This commit is contained in:
Wolfgang Hottgenroth
2016-10-23 00:34:06 +02:00
parent f8490e32a5
commit 07b99a9f23
15 changed files with 850 additions and 13 deletions

View File

@ -18,6 +18,11 @@
#include <PontCoopScheduler.h>
#include "stm32f1xx_hal.h"
extern TIM_HandleTypeDef htim1;
extern TIM_HandleTypeDef htim2;
void blink(void *handle) {
HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
@ -25,11 +30,20 @@ void blink(void *handle) {
void my_setup_1() {
schInit();
schAdd(blink, NULL, 0, 1000);
schAdd(blink, NULL, 0, 100);
}
void my_setup_2() {
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1);
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_2);
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_3);
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_1);
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_2);
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_3);
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);
}
void my_loop() {
@ -41,3 +55,15 @@ void HAL_SYSTICK_Callback() {
//HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
schUpdate();
}
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim) {
if (htim->Instance == TIM1) {
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
HAL_GPIO_TogglePin(LED2_PIN_GPIO_Port, LED2_PIN_Pin);
} else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) {
HAL_GPIO_TogglePin(LED3_PIN_GPIO_Port, LED3_PIN_Pin);
} else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) {
HAL_GPIO_TogglePin(LED4_PIN_GPIO_Port, LED4_PIN_Pin);
}
}
}