ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
830615
michas (10.04.2018 15:28 - 15:37, просмотров: 2157)
STM32F030 тактируется напрямую от HSE, т.е. тактовая 8М. Есть полусофтварная задержка, которая дергает ножкой, формируя импульс. __INLINE void delay_us(uint16_t delay) { TIM3->PSC = (F_CPU/1000000)-1; //устанавливаем предделитель TIM3->ARR = delay; //загрузить значение задержки TIM3->CNT = 0; TIM3->SR &= ~TIM_SR_UIF; TIM3->CR1 = TIM_CR1_CEN; //запустить таймер while((TIM3->SR & TIM_SR_UIF)==0); //дождаться конца задержки TIM3->SR &= ~TIM_SR_UIF; //сбросить флаг } Проблема - более 100us задержка формируется достаточно точно, меньше начинает нарастать задержка, которая при 10us практически удваивается. Ассемблерный код вменяемый вроде. Кейл-лайт, оптимизация L2. В чем может быть причина, DMA есть, отключал не помогло. UPD. Поставил задержку в микросекунду, факт. строб в 8.2us