Доброго времени суток! Есть некое устройство, с которым возникла сложность: не работает PB3 ни на вход, ни на выход (вообще, рассчитан на вход). Решил проверить, не виноват ли дветысячистрочный код, написал простую дрыгалку, хотел проверить, работает ли хотя бы выход:
Цитата:
#include "stm32f10x.h"
int main(){
SystemInit();
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
GPIOB->CRL |= GPIO_CRL_MODE3;
while(1){
GPIOB->ODR ^= GPIO_ODR_ODR3;
for(uint32_t i=0; i<7200; i++);
}
}
Щупаю осциллом - кроме 0,3В постоянки при включении питания МК нифига нет.
Настраиваю на вход+внешняя подтяжка - МК воспринимает этот вход как постоянно прижатую к земле кнопку, но на ней по факту +3.28В!!!
Проверял ан КЗ с соседними ногами, питанием - чисто.
Следующая мысль: сдох вывод, меняем МК. Подумано - сделано. Эффект=0, всё то же самое, что и с предыдущим.
Впихиваю вместо PB3 PB5 - всё прекрасно работает.
В чём кроется магия?