STM32F103 Не работает вход/выход PB3

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

STM32F103 Не работает вход/выход PB3

Сообщение Alex-Elektron »

Доброго времени суток! Есть некое устройство, с которым возникла сложность: не работает 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 - всё прекрасно работает.
В чём кроется магия?
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F103 Не работает вход/выход PB3

Сообщение Reflector »

Открой Datasheet, посмотри какая функция у данного пина по умолчанию, сделай ремап.
Реклама
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

Re: STM32F103 Не работает вход/выход PB3

Сообщение Alex-Elektron »

Глянул, на PB3 болтается ЖЖитаг, как и на PB4. Но при этом на PB4 кнопка работает. Ремап не помог, или я что-то не так делаю.

Код: Выделить всё

AFIO->MAPR = AFIO_MAPR_SWJ_CFG_2;
Вложения
2018-03-21_15-09-33.png
(46.73 КБ) 739 скачиваний
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32F103 Не работает вход/выход PB3

Сообщение Мурик »

На PB3 один из выводов JTAG. Нужно добавить в код строку.

Код: Выделить всё

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
Это отключит JTAG, но оставит интерфейс SWD.
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F103 Не работает вход/выход PB3

Сообщение Reflector »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3335794#p3335794"]Глянул, на PB3 болтается ЖЖитаг, как и на PB4. Но при этом на PB4 кнопка работает. Ремап не помог, или я что-то не так делаю.[/uquote]
JTDO на PB3 - это выход, а JNTRST на PB4 - вход, потому не удивительно, что кнопка работает.

Код: Выделить всё

AFIO->MAPR = AFIO_MAPR_SWJ_CFG_2;
Если отладчик по SWD используется, то нужно AFIO_MAPR_SWJ_CFG_JTAGDISABLE(AFIO_MAPR_SWJ_CFG_1), но в целом все верно. Только перед этим еще нужно для альтернативных функций включить тактирование(RCC_APB2ENR_AFIOEN).
Реклама
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

Re: STM32F103 Не работает вход/выход PB3

Сообщение Alex-Elektron »

Код, значит, выглядит теперь следующим образом:

Код: Выделить всё

#include "stm32f10x.h"

int main(){
	SystemInit();

	RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
	RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

	AFIO->MAPR |=AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
	GPIOB->CRL |= GPIO_CRL_MODE3;

	while(1){
		for(uint32_t i=0; i<7200; i++);
		GPIOB->ODR ^= GPIO_ODR_ODR3;
	}
}
но пока максимум, что я вижу, это меандр амплитудой 200 мВ и частотой 417Гц
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32F103 Не работает вход/выход PB3

Сообщение Reflector »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3335806#p3335806"]но пока максимум, что я вижу, это меандр амплитудой 200 мВ и частотой 417Гц[/uquote]
А что должно быть? Как думаешь, какой режим для пина ты выбрал?
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

Re: STM32F103 Не работает вход/выход PB3

Сообщение Alex-Elektron »

Push-pull, 50MHz

Добавлено after 3 minutes 3 seconds:
Баллииин, CNF3 не вырубил. Всё, решена задачка, спасибо большое!
Ответить

Вернуться в «ARM»