Easyelectronics.ru

Электроника для всех
Текущее время: 22 янв 2021, 11:58

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 23 окт 2020, 05:45 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
Приветствую.
Не могу запустить код формирования импульса по фронту внешнего сигнала.
STM32F429i-Disco-1 Tim4. Командой TIM_Cmd(TIM4, ENABLE) таймер запускается, а от внешнего сигнала нет. Что я делаю не так?
Идея сделать перестраиваемый одновибратор, работающий на больших частотах.

Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 23 окт 2020, 10:34 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
По фронту формируется задержанный импульс заданной длины.
Код:
TIM4->PSC   = 0;           // 13.9 нс (1/72MГц)
TIM4->ARR   = 74+22;       // длительность импульса 306 нс
TIM4->CCR2  = 74;          // задержка импульса 1 мкс
TIM4->CCMR1 = TIM_CCMR1_CC1S_0 | _VAL2FLD(TIM_CCMR1_OC2M,7);
TIM4->SMCR  = TIM_SMCR_TS_TI1FP1 | _VAL2FLD(TIM_SMCR_SMS,6); 
TIM4->CR1   = TIM_CR1_OPM; 
TIM4->EGR   = TIM_EGR_UG;
TIM4->SR    = 0;
TIM4->CCER  = TIM_CCER_CC2E;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 26 окт 2020, 07:01 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
Не работает :(
Как я понял это пример для STM32F103. В моей библиотеке не было констант TIM_SMCR_TS_TI1FP1 и _VAL2FLD немного изменил код:
Код:
void init_tim_4_1(void)
{
   
  RCC_TIMCLKPresConfig(RCC_TIMPrescActivated);
   TIM_ICInitTypeDef  TIM_ICInitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  /* TIM4 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

  /* GPIOD clock enable */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
 
  // GPIOD Configuration: TIM4 CH1 (PD12), TIM4 CH2 (PD13)
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  /* Connect TIM4 pins to AF2 */ 
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);  //PD12 ch1 input
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_TIM4);  // PD13 ch2 output
   
   
   TIM4->PSC   = 0;           // 13.9 нс (1/72MГц)
   TIM4->ARR   = 74+22;       // длительность импульса 306 нс
   TIM4->CCR2  = 74;          // задержка импульса 1 мкс

// TIM4->CCMR1 = TIM_CCMR1_CC1S_0 | _VAL2FLD(TIM_CCMR1_OC2M,7);
   TIM4->CCMR1 |= TIM_CCMR1_CC1S_0;   // CC1S 01 канал работает в режиме захвата, сигнал захвата — TI1
   TIM4->CCMR1 |= TIM_CCMR1_OC2M;      // CCM 111 2 канал режим PWM2
   
// TIM4->SMCR  = TIM_SMCR_TS_TI1FP1 | _VAL2FLD(TIM_SMCR_SMS,6);
   TIM4->SMCR  = TIM_SMCR_TS_0 | TIM_SMCR_TS_2;  // TS 101 Filtered Timer Input 1 (TI1FP1) – сигнал TI1 (после цифрового фильтра)
   TIM4->SMCR  |= TIM_SMCR_SMS;                 // SMS 110 Trigger Mode, триггерный режим – счётчик запускается (но не сбрасывается) нарастающим фронтом сигнала на триггерном входе TRGI
   
   TIM4->CR1   = TIM_CR1_OPM;       // 1 канал OPM
   TIM4->EGR   = TIM_EGR_UG;         // Update generation
   TIM4->SR    = 0;                     // Clear status register
   TIM4->CCER  = TIM_CCER_CC2E;   // Capture/Compare 2 output enable
   TIM4->CR1 |= TIM_CR1_CEN;         // TIM4 enable
}

В интернете не нашел ни одного аналогичного примера для STM32F4.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 26 окт 2020, 09:27 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
non606 писал(а):
Как я понял это пример для STM32F103.
Да, но таймеры у всех STM32 практически одинаковые. TIM4 не должен отличаться.

non606 писал(а):
В моей библиотеке не было констант TIM_SMCR_TS_TI1FP1
Да, это я доопределял, забыл. Можно заменить на _VAL2FLD(TIM_SMCR_TS,5);

non606 писал(а):
В моей библиотеке не было констант _VAL2FLD
Это макрос из CMSIS, его не может не быть. Определён в core_cm4.h.

non606 писал(а):
немного изменил код:
Код:
TIM4->CR1 |= TIM_CR1_CEN;         // TIM4 enable
Зачем? Не припомню в моём примере такого.

non606 писал(а):
В интернете не нашел ни одного аналогичного примера для STM32F4.
Вам определённо "чернила для 4-го класса" нужны?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 26 окт 2020, 09:53 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
Код:
// TIM4->SMCR  = TIM_SMCR_TS_TI1FP1 | _VAL2FLD(TIM_SMCR_SMS,6);
   TIM4->SMCR  = TIM_SMCR_TS_0 | TIM_SMCR_TS_2;  // TS 101 Filtered Timer Input 1 (TI1FP1) – сигнал TI1 (после цифрового фильтра)
   TIM4->SMCR  |= TIM_SMCR_SMS;                 // SMS 110 Trigger Mode, триггерный режим – счётчик запускается (но не сбрасывается) нарастающим фронтом сигнала на триггерном входе TRGI
Мне кажется или это разный код?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 26 окт 2020, 15:10 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
У меня древний CMIS там нет _VAL2FLD.
Код вроде правильный, в TS заносится 5, в SMS - 6.
Может в каком-то app-note мелким шрифтом описаны особенности OPM в F4x...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 26 окт 2020, 15:32 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
non606 писал(а):
У меня древний CMIS там нет _VAL2FLD.
Могу продать свежий:)

non606 писал(а):
Код вроде правильный, в TS заносится 5, в SMS - 6.
6 ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 27 окт 2020, 06:11 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
Да, неверные значения в регистр заносились. Исправил:
Код:
// TIM4->CCMR1 = TIM_CCMR1_CC1S_0 | _VAL2FLD(TIM_CCMR1_OC2M,7);
   TIM4->CCMR1 |= TIM_CCMR1_CC1S_0;   // CC1S 01
   TIM4->CCMR1 |= TIM_CCMR1_OC2M;      // CCM 111
   TIM4->CCMR1 &= 0b1111111111111101;
   
//  TIM4->SMCR  = TIM_SMCR_TS_TI1FP1 | _VAL2FLD(TIM_SMCR_SMS,6);
   TIM4->SMCR  = TIM_SMCR_TS_0 | TIM_SMCR_TS_2;  // TS 101
   TIM4->SMCR  |= TIM_SMCR_SMS_1 | TIM_SMCR_SMS_2;   // SMS 110    
   TIM4->SMCR &= 0b1111111111010110;

В отладчике посмотрел
CMR1=0x7001 0111 0000 0000 0001
SMCR=0x0056 0000 0000 0101 0110
Все равно не работает :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 27 окт 2020, 09:48 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
Во-первых, перестаньте быдлокодить! Для записи полностью известного значения в регистр нужна одна операция присваивания, а не дрюканье его 6!!! раз. Каждое обращение к регистру периферии вызывает какое-то действие.

Во-вторых, что значит "не работает"? Счётчик запускается по входящему фронту?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 10 ноя 2020, 10:40 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
Прошел целый квест пока разобрался. Попробовал примеры для CubeMX, они тоже не работали.. В примерах к Кубу нашел рабочий пример.
HAL
Код:
void init_tim5_hal(void) {

   TIM_ClockConfigTypeDef sClockSourceConfig;
   TIM_MasterConfigTypeDef sMasterConfig;
   TIM_OC_InitTypeDef sConfigOC;
   TIM_OnePulse_InitTypeDef sc;

   GPIO_InitTypeDef GPIO_InitStruct;

   __HAL_RCC_TIM3_CLK_ENABLE();
   __HAL_RCC_TIM5_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();

   //       PA1 ------> TIM5_CH2
   GPIO_InitStruct.Pin = GPIO_PIN_1;
   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

   //       PA0-WKUP     ------> TIM5_CH1
   GPIO_InitStruct.Pin = GPIO_PIN_0;
   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

   htim5.Instance = TIM5;
   htim5.Init.Prescaler = 1680;
   htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
   htim5.Init.Period = 100;
   htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
   HAL_TIM_Base_Init(&htim5);
   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
   HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig);

   HAL_TIM_PWM_Init(&htim5);

   HAL_TIM_IC_Init(&htim5);

   HAL_TIM_OnePulse_Init(&htim5, TIM_OPMODE_SINGLE);

   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
   HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig);

   sc.OCMode = TIM_OCMODE_PWM2;
   sc.Pulse = 55;
   sc.OCPolarity = TIM_OCPOLARITY_HIGH;
   sc.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
   sc.ICSelection = TIM_ICSELECTION_DIRECTTI;
   sc.ICFilter = 0;
   sc.OCIdleState  = TIM_OCIDLESTATE_RESET;
   sc.OCNIdleState = TIM_OCNIDLESTATE_RESET;

   HAL_TIM_OnePulse_ConfigChannel(&htim5, &sc, TIM_CHANNEL_1, TIM_CHANNEL_2);
   HAL_TIM_OnePulse_Start(&htim5, TIM_CHANNEL_1);
}

регистры
Код:
void init_tim5_reg(void){

   uint32_t tmpcr1 = 0U;
   uint32_t tmpsmcr = 0U;
   uint32_t tmpccmrx = 0U;
   uint32_t tmpccer = 0U;
   uint32_t tmpcr2 = 0U;
   uint32_t tmpccmr1 = 0U;
   GPIO_InitTypeDef GPIO_InitStruct;
   uint32_t tmp = 0U;


   __HAL_RCC_TIM5_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();

   //       PA1 ------> TIM5_CH2
   GPIO_InitStruct.Pin = GPIO_PIN_1;
   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

   //       PA0-WKUP     ------> TIM5_CH1
   GPIO_InitStruct.Pin = GPIO_PIN_0;
   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

   tmpcr1 = TIM5->CR1;

   /* Select the Counter Mode */
   tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
   tmpcr1 |= TIM_COUNTERMODE_UP;

   /* Set the clock division */
   tmpcr1 &= ~TIM_CR1_CKD;
   tmpcr1 |= TIM_CLOCKDIVISION_DIV1 ;

   TIM5->CR1 = tmpcr1;

   /* Set the Auto-reload value (Period) */
   TIM5->ARR = 100;

   /* Set the Prescaler value */
   TIM5->PSC = 16800;

   /* Set the Repetition Counter value */
   TIM5->RCR = 0;

   /* Generate an update event to reload the Prescaler
      and the repetition counter(only for TIM1 and TIM8) value immediately */
   TIM5->EGR = TIM_EGR_UG;
// ----
   tmpsmcr = TIM5->SMCR;
   tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS);
   tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP);
   TIM5->SMCR = tmpsmcr;

   /* Disable slave mode to clock the prescaler directly with the internal clock */
   TIM5->SMCR &= ~TIM_SMCR_SMS;
// ------------
   /* Configure the OPM Mode */
   TIM5->CR1 |= TIM_OPMODE_SINGLE;
// ----------
   /* Reset the MMS Bits */
   TIM5->CR2 &= ~TIM_CR2_MMS;
   /* Select the TRGO source */
   TIM5->CR2 |= TIM_TRGO_RESET;

   /* Reset the MSM Bit */
   TIM5->SMCR &= ~TIM_SMCR_MSM;
   /* Set or Reset the MSM Bit */
   TIM5->SMCR |= TIM_MASTERSLAVEMODE_DISABLE;
// ----------------
   /* Disable the Channel 1: Reset the CC1E Bit */
   TIM5->CCER &= ~TIM_CCER_CC1E;

   /* Get the TIMx CCER register value */
   tmpccer = TIM5->CCER;
   /* Get the TIMx CR2 register value */
   tmpcr2 = TIM5->CR2;

   /* Get the TIMx CCMR1 register value */
   tmpccmrx = TIM5->CCMR1;

   /* Reset the Output Compare Mode Bits */
   tmpccmrx &= ~TIM_CCMR1_OC1M;
   tmpccmrx &= ~TIM_CCMR1_CC1S;
   /* Select the Output Compare Mode */
   tmpccmrx |= TIM_OCMODE_PWM2;

   /* Reset the Output Polarity level */
   tmpccer &= ~TIM_CCER_CC1P;
   /* Set the Output Compare Polarity */
   tmpccer |= TIM_OCPOLARITY_HIGH;

   /* Reset the Output N Polarity level */
   tmpccer &= ~TIM_CCER_CC1NP;
   /* Reset the Output N State */
   tmpccer &= ~TIM_CCER_CC1NE;

   /* Reset the Output Compare and Output Compare N IDLE State */
   tmpcr2 &= ~TIM_CR2_OIS1;
   tmpcr2 &= ~TIM_CR2_OIS1N;
   /* Set the Output Idle state */
   tmpcr2 |= TIM_OCIDLESTATE_RESET;
   /* Set the Output N Idle state */
   tmpcr2 |= TIM_OCNIDLESTATE_RESET;

   /* Write to TIMx CR2 */
   TIM5->CR2 = tmpcr2;

   /* Write to TIMx CCMR1 */
   TIM5->CCMR1 = tmpccmrx;

   /* Set the Capture Compare Register value */
   TIM5->CCR1 = 55;

   /* Write to TIMx CCER */
   TIM5->CCER = tmpccer;

   /* Disable the Channel 2: Reset the CC2E Bit */
   TIM5->CCER &= ~TIM_CCER_CC2E;
   tmpccmr1 = TIM5->CCMR1;
   tmpccer = TIM5->CCER;

   /* Select the Input */
   tmpccmr1 &= ~TIM_CCMR1_CC2S;
   tmpccmr1 |= (TIM_ICSELECTION_DIRECTTI << 8U);

   /* Set the filter */
   tmpccmr1 &= ~TIM_CCMR1_IC2F;
   tmpccmr1 |= ((0 << 12U) & TIM_CCMR1_IC2F);

   /* Select the Polarity and set the CC2E Bit */
   tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP);
   tmpccer |= ((TIM_INPUTCHANNELPOLARITY_RISING << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP));

   /* Write to TIMx CCMR1 and CCER registers */
   TIM5->CCMR1 = tmpccmr1 ;
   TIM5->CCER = tmpccer;

    /* Reset the IC2PSC Bits */
    TIM5->CCMR1 &= ~TIM_CCMR1_IC2PSC;

    /* Select the Trigger source */
    TIM5->SMCR &= ~TIM_SMCR_TS;
    TIM5->SMCR |= TIM_TS_TI2FP2;

    /* Select the Slave Mode */
    TIM5->SMCR &= ~TIM_SMCR_SMS;
    TIM5->SMCR |= TIM_SLAVEMODE_TRIGGER;
// ------------
    tmp = TIM_CCER_CC1E << TIM_CHANNEL_1;

    /* Reset the CCxE Bit */
    TIM5->CCER &= ~tmp;

    /* Set or reset the CCxE Bit */
    TIM5->CCER |= (uint32_t)(TIM_CCx_ENABLE << TIM_CHANNEL_1);

    tmp = TIM_CCER_CC1E << TIM_CHANNEL_2;

    /* Reset the CCxE Bit */
    TIM5->CCER &= ~tmp;

    /* Set or reset the CCxE Bit */
    TIM5->CCER |= (uint32_t)(TIM_CCx_ENABLE << TIM_CHANNEL_2);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 10 ноя 2020, 12:57 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2140
non606 писал(а):
Попробовал примеры для CubeMX, они тоже не работали.. В примерах к Кубу нашел рабочий пример.

То есть это два разных Куба/Cube ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 10 ноя 2020, 13:47 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
ОМГ, какой судорог...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 11 ноя 2020, 05:22 
Только пришел

Зарегистрирован: 23 окт 2020, 05:17
Сообщения: 8
Ни один пример с форумов не работал. CubeMX генерирует неправильный код для OPM. Заработал пример из en.STM32Cube_FW_F4_V1.24.0.zip


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F429 OPM от внешнего сигнала
СообщениеДобавлено: 14 ноя 2020, 11:32 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1657
non606 писал(а):
Ни один пример с форумов не работал.
Мой пример 100% рабочий. Запустил на F411. PA2 дергаю для генерации импульса запуска и подаю его перемычкой на PA0. На PA1 формируется заветный импульс. Инициализация самого таймера 9 строк.
Код:
int main()

  // PA0=TIM5_CH1_Input, PA1=TIM5_CH2_Output  AF=2
  PinList<PA0,PA1>::mode<PinMode::AF_PushPull_HighSpeed<2>>();   

  RCC->APB1ENR |= RCC_APB1ENR_TIM5EN;
 
  TIM5->PSC   = 0;
  TIM5->ARR   = 42+48;
  TIM5->CCR2  = 43;
  TIM5->CCMR1 = _VAL2FLD(TIM_CCMR1_CC1S,1) | _VAL2FLD(TIM_CCMR1_OC2M,7);
  TIM5->SMCR  = _VAL2FLD(TIM_SMCR_TS,5) | _VAL2FLD(TIM_SMCR_SMS,6); 
  TIM5->CR1   = TIM_CR1_OPM; 
  TIM5->EGR   = TIM_EGR_UG;
  TIM5->SR    = 0;
  TIM5->CCER  = TIM_CCER_CC2E;
 
  // Импульс запуска ногодрыгом PA2
  PA2::mode<PinMode::PushPull_HighSpeed<>>();
  SysTick_Config(96'000'000/8);
 
  for(;;);
}

void SysTick_Handler()
{
  PA2::set();
  __NOP();
  PA2::clear();
}
Вложение:
DS2_2020111485956.png
DS2_2020111485956.png [ 25.79 Кб | Просмотров: 116 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB