mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #173 from bcostm/master
[NUCLEO_xxx] Fix issue with ticker + add volatilepull/176/head
commit
94a1bdc84b
|
@ -37,8 +37,8 @@
|
|||
|
||||
static int us_ticker_inited = 0;
|
||||
static volatile uint32_t SlaveCounter = 0;
|
||||
static uint32_t oc_int_part = 0;
|
||||
static uint16_t oc_rem_part = 0;
|
||||
static volatile uint32_t oc_int_part = 0;
|
||||
static volatile uint16_t oc_rem_part = 0;
|
||||
|
||||
void set_compare(uint16_t count) {
|
||||
// Set new output compare value
|
||||
|
|
|
@ -37,8 +37,8 @@
|
|||
|
||||
static int us_ticker_inited = 0;
|
||||
static volatile uint32_t SlaveCounter = 0;
|
||||
static uint32_t oc_int_part = 0;
|
||||
static uint16_t oc_rem_part = 0;
|
||||
static volatile uint32_t oc_int_part = 0;
|
||||
static volatile uint16_t oc_rem_part = 0;
|
||||
|
||||
void set_compare(uint16_t count) {
|
||||
// Set new output compare value
|
||||
|
|
|
@ -40,8 +40,8 @@ static TIM_HandleTypeDef TimMasterHandle;
|
|||
|
||||
static int us_ticker_inited = 0;
|
||||
static volatile uint32_t SlaveCounter = 0;
|
||||
static uint32_t oc_int_part = 0;
|
||||
static uint16_t oc_rem_part = 0;
|
||||
static volatile uint32_t oc_int_part = 0;
|
||||
static volatile uint16_t oc_rem_part = 0;
|
||||
|
||||
void set_compare(uint16_t count) {
|
||||
// Set new output compare value
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
|
||||
static int us_ticker_inited = 0;
|
||||
static volatile uint32_t SlaveCounter = 0;
|
||||
static uint32_t oc_int_part = 0;
|
||||
static uint16_t oc_rem_part = 0;
|
||||
static volatile uint32_t oc_int_part = 0;
|
||||
static volatile uint16_t oc_rem_part = 0;
|
||||
|
||||
void set_compare(uint16_t count) {
|
||||
// Set new output compare value
|
||||
|
@ -58,20 +58,19 @@ static void tim_update_oc_irq_handler(void) {
|
|||
// Output compare interrupt: used by interrupt system
|
||||
if (TIM_GetITStatus(TIM_MST, TIM_IT_CC1) == SET) {
|
||||
TIM_ClearITPendingBit(TIM_MST, TIM_IT_CC1);
|
||||
}
|
||||
|
||||
if (oc_rem_part > 0) {
|
||||
set_compare(oc_rem_part); // Finish the remaining time left
|
||||
oc_rem_part = 0;
|
||||
}
|
||||
else {
|
||||
if (oc_int_part > 0) {
|
||||
set_compare(0xFFFF);
|
||||
oc_rem_part = cval; // To finish the counter loop the next time
|
||||
oc_int_part--;
|
||||
if (oc_rem_part > 0) {
|
||||
set_compare(oc_rem_part); // Finish the remaining time left
|
||||
oc_rem_part = 0;
|
||||
}
|
||||
else {
|
||||
us_ticker_irq_handler();
|
||||
if (oc_int_part > 0) {
|
||||
set_compare(0xFFFF);
|
||||
oc_rem_part = cval; // To finish the counter loop the next time
|
||||
oc_int_part--;
|
||||
}
|
||||
else {
|
||||
us_ticker_irq_handler();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue