pwm: add analogWriteResolution
This commit is contained in:
parent
f551dd732b
commit
d6efe6df86
|
@ -108,6 +108,7 @@ int analogRead(uint8_t);
|
|||
void analogReadResolution(int resolution);
|
||||
void analogReference(uint8_t mode);
|
||||
void analogWrite(uint8_t, int);
|
||||
void analogWriteResolution(int bits);
|
||||
|
||||
//unsigned long millis(void);
|
||||
//unsigned long micros(void);
|
||||
|
|
|
@ -26,6 +26,7 @@ TIM_HandleTypeDef *handle;
|
|||
|
||||
static uint32_t counter;
|
||||
static uint32_t waitCycles;
|
||||
static uint8_t analogWriteResolutionBits = 8;
|
||||
|
||||
const uint32_t TIMER_MAX_CYCLES = UINT16_MAX;
|
||||
|
||||
|
@ -52,6 +53,10 @@ static stm32_pwm_type pwm_config[sizeof(variant_pin_list) / sizeof(variant_pin_l
|
|||
|
||||
void stm32_pwm_disable(GPIO_TypeDef *port, uint32_t pin);
|
||||
|
||||
void analogWriteResolution(int bits) {
|
||||
analogWriteResolutionBits = bits;
|
||||
}
|
||||
|
||||
void analogWrite(uint8_t pin, int value) {
|
||||
static TIM_HandleTypeDef staticHandle;
|
||||
|
||||
|
@ -98,7 +103,7 @@ void analogWrite(uint8_t pin, int value) {
|
|||
pwm_config[i].port = variant_pin_list[pin].port;
|
||||
pwm_config[i].pin_mask = variant_pin_list[pin].pin_mask;
|
||||
pwm_config[i].frequency = HAL_RCC_GetPCLK2Freq() / PWM_FREQUENCY_HZ;
|
||||
pwm_config[i].duty_cycle = pwm_config[i].frequency * value / 256;
|
||||
pwm_config[i].duty_cycle = pwm_config[i].frequency * value / (1 << analogWriteResolutionBits);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue