А где откопали этот "stm8s.h" ???
На офф сайте ST вместе с STM8 I2C optimized examples.
А где откопали этот "stm8s.h" ???
Вставка пары нопов между строками 3 и 4 решает проблему, но немое недоумение остается. Вроде ж солидное устройство, а работает только при помощи веревок, палок и грязных тряпок. Чтение эрраты и референса не принесло ни просветления, ни облегчения.
Bit 3 OPM: One-pulse mode
0: Counter is not stopped at update event
1: Counter stops counting at the next update event (clearing the CEN bit)
HHIMERA писал(а):CEN тут не причём...
Код: Выделить всё
TIM2_CR1_OPM = 1; // режим единичного прогона таймера
TIM2_CR1_URS = 1; // не поднимать флаги при "ручной" перегрузке счетчиков
TIM2_EGR_UG = 1; // сама "ручная" перегрузка
TIM2_CR1_CEN = 1; // запуск
Код: Выделить всё
void delay_us(uint16_t delay)
{
TIM3->PSC = 48-1; //устанавливаем предделитель
TIM3->ARR = delay; //устанавливаем значение переполнения таймера, а значит и значение при котором генерируется Событие обновления
TIM3->EGR |= TIM_EGR_UG; //Генерируем Событие обновления для записи данных в регистры PSC и ARR
TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; //Запускаем таймер записью бита CEN и устанавливаем режим Одного прохода установкой бита OPM
while ((TIM3->CR1 & TIM_CR1_CEN)!=0);
}oleg110592 писал(а):ответ на на вопрос "что делает код" не получил
TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; //Запускаем таймер записью бита CEN и устанавливаем режим Одного прохода установкой бита OPM
все прекрасно работает
HHIMERA писал(а):Слов нет...