работающие 2 канала
This commit is contained in:
parent
39edb0d981
commit
6f930abf27
@ -142,6 +142,11 @@ int main(void)
|
||||
HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);
|
||||
HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_2);
|
||||
htim2.Instance->DIER = (TIM_DIER_UIE | TIM_DIER_CC2IE);
|
||||
|
||||
HAL_TIM_Base_Start(&htim5);
|
||||
HAL_TIM_IC_Start(&htim5, TIM_CHANNEL_1);
|
||||
HAL_TIM_IC_Start(&htim5, TIM_CHANNEL_2);
|
||||
htim5.Instance->DIER = (TIM_DIER_UIE | TIM_DIER_CC2IE);
|
||||
while (1) {
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
// for (int i = 0; i < 7; i++) {
|
||||
|
@ -255,7 +255,7 @@ void TIM2_IRQHandler(void)
|
||||
/* USER CODE BEGIN TIM2_IRQn 0 */
|
||||
static uint32_t overflows = 0;
|
||||
const uint16_t sr = TIM2->SR;
|
||||
TIM2->SR = 0;
|
||||
TIM2->SR = TIM_SR_CC1OF | TIM_SR_CC2OF | TIM_SR_CC1IF | TIM_SR_CC2IF; // все флаги кроме флагов нужных мне каналов
|
||||
|
||||
if (sr & TIM_SR_UIF) {
|
||||
overflows++;
|
||||
@ -263,16 +263,15 @@ void TIM2_IRQHandler(void)
|
||||
if (sr & (TIM_SR_CC1OF | TIM_SR_CC2OF)) {
|
||||
// overrun, skip processing
|
||||
buffer_ch1.overruns = buffer_ch1.overruns + 1;
|
||||
TIM2->SR = 0;
|
||||
} else if (sr & TIM_SR_CC2IF) {
|
||||
BufferItem_t b;
|
||||
b.duration = TIM2->CCR1;
|
||||
b.timepoint = TIM2->CCR2;
|
||||
b.timepoint = TIM2->CCR1;
|
||||
b.duration = TIM2->CCR2;
|
||||
b.duration = b.duration - b.timepoint;
|
||||
b.timepoint |= (uint64_t)(overflows) << 32;
|
||||
ChannelBuffer_push(&buffer_ch1, &b);
|
||||
}
|
||||
|
||||
|
||||
/* USER CODE END TIM2_IRQn 0 */
|
||||
/* USER CODE BEGIN TIM2_IRQn 1 */
|
||||
|
||||
@ -285,7 +284,25 @@ void TIM2_IRQHandler(void)
|
||||
void TIM5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN TIM5_IRQn 0 */
|
||||
static uint32_t overflows = 0;
|
||||
const uint16_t sr = TIM5->SR;
|
||||
TIM5->SR = TIM_SR_CC1OF | TIM_SR_CC2OF | TIM_SR_CC1IF | TIM_SR_CC2IF; // все флаги кроме флагов нужных мне каналов
|
||||
|
||||
if (sr & TIM_SR_UIF) {
|
||||
overflows++;
|
||||
}
|
||||
if (sr & (TIM_SR_CC1OF | TIM_SR_CC2OF)) {
|
||||
// overrun, skip processing
|
||||
buffer_ch2.overruns = buffer_ch2.overruns + 1;
|
||||
TIM5->SR = 0;
|
||||
} else if (sr & TIM_SR_CC2IF) {
|
||||
BufferItem_t b;
|
||||
b.timepoint = TIM5->CCR1;
|
||||
b.duration = TIM5->CCR2;
|
||||
b.duration = b.duration - b.timepoint;
|
||||
b.timepoint |= (uint64_t)(overflows) << 32;
|
||||
ChannelBuffer_push(&buffer_ch2, &b);
|
||||
}
|
||||
/* USER CODE END TIM5_IRQn 0 */
|
||||
/* USER CODE BEGIN TIM5_IRQn 1 */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user