led control

This commit is contained in:
Wolfgang Hottgenroth
2018-01-18 15:06:37 +01:00
parent 4ee20b974a
commit 36ce69de93
100 changed files with 8151 additions and 8695 deletions

32
my_src/counter.c Normal file
View File

@ -0,0 +1,32 @@
/* counter.c
*
* Created on: Jan 17, 2018
* Author: wn
*/
#include "counter.h"
#include "stm32f1xx_hal.h"
#include <PontCoopScheduler.h>
#include <diag/Trace.h>
extern TIM_HandleTypeDef htim2;
extern TIM_HandleTypeDef htim1;
void counterExec(void *handle) {
trace_printf("counterExec\n");
volatile uint32_t cnt = __HAL_TIM_GET_COUNTER(&htim2);
trace_printf("%d\n", cnt);
}
void counterInit() {
HAL_TIM_Base_Start(&htim2);
schAdd(counterExec, NULL, 0, 100);
}

14
my_src/counter.h Normal file
View File

@ -0,0 +1,14 @@
/*
* counter.h
*
* Created on: Jan 17, 2018
* Author: wn
*/
#ifndef COUNTER_H_
#define COUNTER_H_
void counterInit();
#endif /* COUNTER_H_ */

83
my_src/led.c Normal file
View File

@ -0,0 +1,83 @@
/*
* led.c
*
* Created on: Jan 18, 2018
* Author: wn
*/
#include "led.h"
#include "stm32f1xx_hal.h"
#include <PontCoopScheduler.h>
#include <diag/Trace.h>
#include <stdbool.h>
typedef enum { LED_ON, LED_OFF, LED_BLINK } eLedCmd;
typedef struct {
eLedCmd cmdRed;
bool stateRed;
eLedCmd cmdGreen;
bool stateGreen;
} tLedHandle;
tLedHandle ledHandle = { .cmdRed = LED_OFF, .stateRed = false, .cmdGreen = LED_OFF, .stateGreen = false };
void ledExec(void *handle) {
tLedHandle *lLedHandle = (tLedHandle*) handle;
if ((lLedHandle->cmdRed == LED_OFF) && (lLedHandle->stateRed)) {
HAL_GPIO_WritePin(GPIOC, ERROR_Pin, GPIO_PIN_RESET);
lLedHandle->stateRed = false;
}
if ((lLedHandle->cmdRed == LED_ON) && (! lLedHandle->stateRed)) {
HAL_GPIO_WritePin(GPIOC, ERROR_Pin, GPIO_PIN_SET);
lLedHandle->stateRed = true;
}
if (lLedHandle->cmdRed == LED_BLINK) {
HAL_GPIO_TogglePin(GPIOC, ERROR_Pin);
lLedHandle->stateRed = true;
}
if ((lLedHandle->cmdGreen == LED_OFF) && (lLedHandle->stateGreen)) {
HAL_GPIO_WritePin(GPIOC, LED2_Pin, GPIO_PIN_RESET);
lLedHandle->stateGreen = false;
}
if ((lLedHandle->cmdGreen == LED_ON) && (! lLedHandle->stateGreen)) {
HAL_GPIO_WritePin(GPIOC, LED2_Pin, GPIO_PIN_SET);
lLedHandle->stateGreen = true;
}
if (lLedHandle->cmdGreen == LED_BLINK) {
HAL_GPIO_TogglePin(GPIOC, LED2_Pin);
lLedHandle->stateGreen = true;
}
}
void ledGreenOn() {
ledHandle.cmdGreen = LED_ON;
}
void ledGreenOff() {
ledHandle.cmdGreen = LED_OFF;
}
void ledGreenBlink() {
ledHandle.cmdGreen = LED_BLINK;
}
void ledRedOn() {
ledHandle.cmdRed = LED_ON;
}
void ledRedOff() {
ledHandle.cmdRed = LED_OFF;
}
void ledRedBlink() {
ledHandle.cmdRed = LED_BLINK;
}
void ledInit() {
schAdd(ledExec, &ledHandle, 0, 100);
HAL_GPIO_WritePin(GPIOC, ERROR_Pin|LED2_Pin, GPIO_PIN_RESET);
}

23
my_src/led.h Normal file
View File

@ -0,0 +1,23 @@
/*
* led.h
*
* Created on: Jan 18, 2018
* Author: wn
*/
#ifndef LED_H_
#define LED_H_
void ledInit();
void ledGreenOn();
void ledGreenOff();
void ledGreenBlink();
void ledRedOn();
void ledRedOff();
void ledRedBlink();
#endif /* LED_H_ */

View File

@ -22,6 +22,8 @@
#include "blinky.h"
#include "pwm.h"
#include "counter.h"
#include "led.h"
void my_setup_1() {
@ -44,6 +46,11 @@ void my_errorHandler() {
void my_setup_2() {
blinkyInit();
pwmInit();
counterInit();
ledInit();
ledGreenOff();
ledRedBlink();
}

View File

@ -13,27 +13,36 @@
extern TIM_HandleTypeDef htim3;
void pwmExec(void *handle) {
const int32_t PWM_MAX = 10000;
const int32_t PWM_STEP = 200;
typedef struct {
int32_t value;
int32_t direction;
} tPwmHandle;
tPwmHandle pwmHandle = { .value = 0, .direction = 1 };
void pwmExec(void *handle) {
tPwmHandle *lPwmHandle = (tPwmHandle*) handle;
lPwmHandle->value += (PWM_STEP * lPwmHandle->direction);
if (lPwmHandle->value >= PWM_MAX) {
lPwmHandle->direction = -1;
}
if (lPwmHandle->value <= 0) {
lPwmHandle->direction = 1;
}
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, lPwmHandle->value);
}
void pwmInit() {
// schAdd(pwmExec, NULL, 0, 1000);
schAdd(pwmExec, &pwmHandle, 0, 50);
__HAL_TIM_SET_AUTORELOAD(&htim3, 10000);
__HAL_TIM_SET_AUTORELOAD(&htim3, PWM_MAX);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 200);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 0);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 1000);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, 2000);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, 8000);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
}