STM32F100C4T6B порты и remap в IAR
STM32F100C4T6B порты и remap в IAR
Подскажите, как можно сделать ремап портов в порты ввода-вывода в IAR:
PA15 (38)
PB3 (39)
PB4 (40)
PB2 (20) - BOOT1
PC13 (2)
И будет ли программироваться по SWD после перепрограммирования этих портов ?
PA15 (38)
PB3 (39)
PB4 (40)
PB2 (20) - BOOT1
PC13 (2)
И будет ли программироваться по SWD после перепрограммирования этих портов ?
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
- Реклама
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: STM32F100C4T6B порты и remap в IAR
Эти порты и так по умолчию GPIO и ничего ремапить не нужно. Для работы SWD нужны 2 вывода - PA13(SWDIO) и PA14(SWCLK). Даже если их ремапнуть в GPIO, можно "законнектиться" программатором в режиме "UNDER RESET". Reset, есс-но, должен быть подключен к программатору. В STM32F100 Вы ничего не сможете сделать такого программно, чтоб получить кирпич.
Все будет только лучше, в крайнем случае - хуже.
Re: STM32F100C4T6B порты и remap в IAR
Эти порты по умолчанию не работают.
Другие без проблем, а эти не хотят.
В интернете написано что нужно сделать ремап, но как не могу найти.
Инициализация
Использование
Другие без проблем, а эти не хотят.
В интернете написано что нужно сделать ремап, но как не могу найти.
Инициализация
Код: Выделить всё
// --- PA15 --------------------
GPIOA->CRH &= ~GPIO_CRH_CNF15;
GPIOA->CRH |= GPIO_CRH_MODE15_1;
// --- PB3 --------------------
GPIOB->CRL &= ~GPIO_CRL_CNF3;
GPIOB->CRL |= GPIO_CRL_MODE3_1;
// --- PB4 --------------------
GPIOB->CRL &= ~GPIO_CRL_CNF3;
GPIOB->CRL |= GPIO_CRL_MODE3_1;
// --- PB2 --------------------
GPIOB->CRL &= ~GPIO_CRL_CNF2;
GPIOB->CRL |= GPIO_CRL_MODE2_1;
// --- PC13 --------------------
GPIOC->CRH &= ~GPIO_CRH_CNF13;
GPIOC->CRH |= GPIO_CRH_MODE13_1;
Код: Выделить всё
delay ();
GPIOA->BSRR|=GPIO_BSRR_BR15;
GPIOB->BSRR|=GPIO_BSRR_BR2;
GPIOB->BSRR|=GPIO_BSRR_BR3;
GPIOB->BSRR|=GPIO_BSRR_BR4;
GPIOC->BSRR|=GPIO_BSRR_BR13;
delay ();
GPIOA->BSRR|=GPIO_BSRR_BS15;
GPIOA->BSRR|=GPIO_BSRR_BS2;
GPIOA->BSRR|=GPIO_BSRR_BS3;
GPIOA->BSRR|=GPIO_BSRR_BS4;
GPIOA->BSRR|=GPIO_BSRR_BS13;
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32F100C4T6B порты и remap в IAR
...sx386 научитесь правильно задавать вопросы.sx386 писал(а):Эти порты по умолчанию не работают.
Другие без проблем, а эти не хотят.
PS. "порты не работают", потому что их использует JTAG - отключите его и пользуйтесь
Re: STM32F100C4T6B порты и remap в IAR
А как его отключить ?
Что нужно отключить для остальных портов ?
Что нужно отключить для остальных портов ?
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
- Реклама
Re: STM32F100C4T6B порты и remap в IAR
Код: Выделить всё
// отключить JTAG и оставить SWD
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
// --- PB3 --------------------
GPIOB->CRL &= ~GPIO_CRL_CNF3;
GPIOB->CRL |= GPIO_CRL_MODE3_1;
// --- PA15 -------------------
GPIOA->CRH &= ~GPIO_CRH_CNF15;
GPIOA->CRH |= GPIO_CRH_MODE15_1;
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Re: STM32F100C4T6B порты и remap в IAR
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
???
???
Re: STM32F100C4T6B порты и remap в IAR
Спасибо. Заработало.
Критикуешь - предлагай. Предлагаешь - делай. Делаешь - отвечай.
Re: STM32F100C4T6B порты и remap в IAR
Расскажу свой случай:
Проц stm32f100. Развёл PA15 на вход, РВ3, РВ4 - выходы. Конечно, понятия не имел про JTAG ремапинг.
РА15 работал, РВ3 и РВ4 - нет. Временно развёл на другие порты. Потом надо было запускать в серию, а с перемычками не айс.
Стал копать, в т.ч. здесь. Нашёл. Выполнил:
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE ;
И... оба-на: РВ3 и РВ4 - заработали. Но РА15 перестал работать.
Далее 2 дня мучений и поисков и разных экспериментов, тыков итд.
И нашёл вот что в одной из строк инициализации портов:
GPIOA->CRH|= (GPIO_CRH_CNF8_1 | GPIO_CRH_CNF11_1 | GPIO_CRH_CNF12_1 | GPIO_CRH_CNF15);
То ли это опечатка, то ли когда писал это - пользовался методом тыка, но должно быть GPIO_CRH_CNF15_1.
Исправил и всё заработало. Отсюда следует:
1. писать нужно внимательно и обязательно понимать - что означает каждая запись, даже если код вытянут из инета.
2. РА15 работает без JTAG ремапинга, если в инициализации потов написать GPIOA->CRH |= GPIO_CRH_CNF15;
т.е. цифровой выход с альтернативной функцией и открытым стоком.
Проц stm32f100. Развёл PA15 на вход, РВ3, РВ4 - выходы. Конечно, понятия не имел про JTAG ремапинг.
РА15 работал, РВ3 и РВ4 - нет. Временно развёл на другие порты. Потом надо было запускать в серию, а с перемычками не айс.
Стал копать, в т.ч. здесь. Нашёл. Выполнил:
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE ;
И... оба-на: РВ3 и РВ4 - заработали. Но РА15 перестал работать.
И нашёл вот что в одной из строк инициализации портов:
GPIOA->CRH|= (GPIO_CRH_CNF8_1 | GPIO_CRH_CNF11_1 | GPIO_CRH_CNF12_1 | GPIO_CRH_CNF15);
То ли это опечатка, то ли когда писал это - пользовался методом тыка, но должно быть GPIO_CRH_CNF15_1.
Исправил и всё заработало. Отсюда следует:
1. писать нужно внимательно и обязательно понимать - что означает каждая запись, даже если код вытянут из инета.
2. РА15 работает без JTAG ремапинга, если в инициализации потов написать GPIOA->CRH |= GPIO_CRH_CNF15;
т.е. цифровой выход с альтернативной функцией и открытым стоком.


