-
Notifications
You must be signed in to change notification settings - Fork 1k
Added functionality to pass custom parameter to HardwareTimer callback #892
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
0b936e5
015ca5a
e34baac
c2b6251
5e800f6
029450f
f9ea23c
5740040
2349940
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -859,7 +859,7 @@ uint32_t HardwareTimer::getCaptureCompare(uint32_t channel, TimerCompareFormat_ | |
* HERTZ_FORMAT: return value is the frequency in hertz for Capture/Compare value | ||
* @retval None | ||
*/ | ||
void HardwareTimer::setPWM(uint32_t channel, uint32_t pin, uint32_t frequency, uint32_t dutycycle, void (*PeriodCallback)(HardwareTimer *), void (*CompareCallback)(HardwareTimer *)) | ||
void HardwareTimer::setPWM(uint32_t channel, uint32_t pin, uint32_t frequency, uint32_t dutycycle, callback_function_t PeriodCallback, callback_function_t CompareCallback) | ||
{ | ||
setPWM(channel, digitalPinToPinName(pin), frequency, dutycycle, PeriodCallback, CompareCallback); | ||
} | ||
|
@@ -876,7 +876,7 @@ void HardwareTimer::setPWM(uint32_t channel, uint32_t pin, uint32_t frequency, u | |
* HERTZ_FORMAT: return value is the frequency in hertz for Capture/Compare value | ||
* @retval None | ||
*/ | ||
void HardwareTimer::setPWM(uint32_t channel, PinName pin, uint32_t frequency, uint32_t dutycycle, void (*PeriodCallback)(HardwareTimer *), void (*CompareCallback)(HardwareTimer *)) | ||
void HardwareTimer::setPWM(uint32_t channel, PinName pin, uint32_t frequency, uint32_t dutycycle, callback_function_t PeriodCallback, callback_function_t CompareCallback) | ||
{ | ||
setMode(channel, TIMER_OUTPUT_COMPARE_PWM1, pin); | ||
setOverflow(frequency, HERTZ_FORMAT); | ||
|
@@ -908,9 +908,9 @@ void HardwareTimer::setInterruptPriority(uint32_t preemptPriority, uint32_t subP | |
* @param callback: interrupt callback | ||
* @retval None | ||
fpistm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
*/ | ||
void HardwareTimer::attachInterrupt(void (*callback)(HardwareTimer *)) | ||
void HardwareTimer::attachInterrupt(callback_function_t callback) | ||
{ | ||
if (callbacks[0] != NULL) { | ||
if (callbacks[0] != nullptr) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would remove the
fpistm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
// Callback previously configured : do not clear neither enable IT, it is just a change of callback | ||
callbacks[0] = callback; | ||
} else { | ||
|
@@ -941,7 +941,7 @@ void HardwareTimer::detachInterrupt() | |
* @param callback: interrupt callback | ||
* @retval None | ||
fpistm marked this conversation as resolved.
Show resolved
Hide resolved
fpistm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
*/ | ||
void HardwareTimer::attachInterrupt(uint32_t channel, void (*callback)(HardwareTimer *)) | ||
void HardwareTimer::attachInterrupt(uint32_t channel, callback_function_t callback) | ||
{ | ||
int interrupt = getIT(channel); | ||
if (interrupt == -1) { | ||
|
@@ -951,7 +951,6 @@ void HardwareTimer::attachInterrupt(uint32_t channel, void (*callback)(HardwareT | |
if ((channel == 0) || (channel > (TIMER_CHANNELS + 1))) { | ||
Error_Handler(); // only channel 1..4 have an interrupt | ||
} | ||
|
||
if (callbacks[channel] != NULL) { | ||
// Callback previously configured : do not clear neither enable IT, it is just a change of callback | ||
callbacks[channel] = callback; | ||
|
@@ -1047,7 +1046,7 @@ void HardwareTimer::updateCallback(TIM_HandleTypeDef *htim) | |
HardwareTimer *HT = (HardwareTimer *)(obj->__this); | ||
|
||
if (HT->callbacks[0] != NULL) { | ||
HT->callbacks[0](HT); | ||
HT->callbacks[0](); | ||
} | ||
} | ||
|
||
|
@@ -1088,7 +1087,7 @@ void HardwareTimer::captureCompareCallback(TIM_HandleTypeDef *htim) | |
HardwareTimer *HT = (HardwareTimer *)(obj->__this); | ||
|
||
if (HT->callbacks[channel] != NULL) { | ||
HT->callbacks[channel](HT); | ||
HT->callbacks[channel](); | ||
} | ||
} | ||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.