P.S. Любителей писать под "micro C pro" в инете не так уж и много....
Переключение портов SWDIO
Переключение портов SWDIO
Всем доброго времени суток. Столкнулся с такой проблемой. Как мне переключить пины swdio на ввод вывод. Почитал документацию про пины PA13 PA14 их надо программно перевести на альтернативную функцию, пытался, но МК никак не хочет их включать (видать криво пытался). Пишу код под "micro C pro"
P.S. Любителей писать под "micro C pro" в инете не так уж и много....
P.S. Любителей писать под "micro C pro" в инете не так уж и много....
- Реклама
Re: Переключение портов SWDIO
Без кода сложно сказать в чем дело.Бубоник писал(а):пытался, но МК никак не хочет их включать
Я бы еще понял если бы писали в mikroPaskal или mikroBasic, но какой смысл писать в mikroC? Есть много других компиляторов Си для STM32.Бубоник писал(а):Пишу код под "micro C pro"
Re: Переключение портов SWDIO
Вот код.
А то что у меня пала рука на этот компилятор просто из-за того, что под подобным компилятором я пишу прошивки под PIC. Просто уже привык к нему, да и проблем как бы с ним не было.
Код: Выделить всё
sbit _50hz at GPIOA_ODR.B12;
sbit triac at GPIOA_ODR.B13;
//IVT_INT_TIM1_BRK_UP_TRG_COM
void Timer_16() iv IVT_INT_TIM1_TRG_COM_TIM17 ics ICS_AUTO
{ UIF_TIM17_SR_bit=0;
triac=!triac;
}
void Timer_17() iv IVT_INT_TIM1_UP_TIM16 ics ICS_AUTO
{ UIF_TIM16_SR_bit=0;
//triac=!triac;
}
/// RCC_HSEConfig(RCC_HSE_ON); // Enable HSE
void main() {
// GPIO_Alternate_Function_Enable(&_GPIO_MODULE_SWJ_JTAGDISABLE);
//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, 1); // Disable JTAG/SWD so pins are availble
GPIO_Digital_output(&GPIOA_BASE, _GPIO_PINMASK_12);//âûõîä íà øàãîâèê
GPIO_Digital_output(&GPIOA_BASE, _GPIO_PINMASK_13);//âûõîä íà øàãîâèê
GPIO_Config(&GPIOA_BASE, _GPIO_PINMASK_13,
_GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_DIGITAL_OUTPUT);
RCC_APB2ENR.TIM17EN = 1; //
TIM17_CR1.CEN = 0; //
//UIF_TIM14_SR_bit=0;
TIM17_PSC = 1000; // Prescale 16_bit
TIM17_ARR = 8000; // Reload 16_bit
NVIC_IntEnable(IVT_INT_TIM1_TRG_COM_TIM17); // Enable Interupt
TIM17_DIER.UIE = 1; //
TIM17_CR1.CEN = 1; //
RCC_APB2ENR.TIM16EN = 1; //
TIM16_CR1.CEN = 0; //
//UIF_TIM14_SR_bit=0;
TIM16_PSC = 1000; // Prescale 16_bit
TIM16_ARR = 8000; // Reload 16_bit
NVIC_IntEnable(IVT_INT_TIM1_UP_TIM16); // Enable Interupt
TIM16_DIER.UIE = 1; //
TIM16_CR1.CEN = 1; //
triac=1;
_50hz=0;
while(1)
{
delay_ms(100);
}
}Re: Переключение портов SWDIO
Продукция микроэлектроники получилась неудачной для ARM. Библиотеки неудобные в использовании.Бубоник писал(а):А то что у меня пала рука на этот компилятор просто из-за того, что под подобным компилятором я пишу прошивки под PIC.
Лучше возьмите бесплатную IDE с компилятором GCC.
Re: Переключение портов SWDIO
Попробуйте явно перевести в output mode
GPIO port mode register (GPIOx_MODER) (x = A..F)
00: Input mode (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode
То есть в режим 01.
Типа того
GPIOA->MODER &= ~(GPIO_MODER_MODER14|GPIO_MODER_MODER13);
GPIOA->MODER |= (GPIO_MODER_MODER14_1|GPIO_MODER_MODER13_1);
Это если нужно на вывод. На ввод второй строки не надо.
ps это для stm32f030. Для f1xx все иначе.
http://radiokot.ru/forum/viewtopic.php?f=59&t=132299 - аналогичная тема .
GPIO port mode register (GPIOx_MODER) (x = A..F)
00: Input mode (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode
То есть в режим 01.
Типа того
GPIOA->MODER &= ~(GPIO_MODER_MODER14|GPIO_MODER_MODER13);
GPIOA->MODER |= (GPIO_MODER_MODER14_1|GPIO_MODER_MODER13_1);
Это если нужно на вывод. На ввод второй строки не надо.
ps это для stm32f030. Для f1xx все иначе.
http://radiokot.ru/forum/viewtopic.php?f=59&t=132299 - аналогичная тема .
- Реклама
Re: Переключение портов SWDIO
Учтите , что в отладку потом можно зайти только из хард ресет , в коиде и кейле есть выбор в отладчике .
Нужно иметь вывод сброса на плате.
Нужно иметь вывод сброса на плате.
Re: Переключение портов SWDIO
Про это я читал. Что некоторые потом зашить не могли или еще какая нибудь петрушка. В общем пока у меня горит на счет этого. Придется помаленьку переходить другие IDE имхо тяжело найти что-то полезное под microc. Все таки хочется полностью управлять МК чтоб в дальнейшем проблем меньше с ним было.Учтите , что в отладку потом можно зайти только из хард ресет
Re: Переключение портов SWDIO
лучше всего оставить SWD в покое.
Re: Переключение портов SWDIO
А что так?
Re: Переключение портов SWDIO
Пины SWD как правило пустые по альтернативе. Повесить на них что-то второстепенное, сегменты дисплея например, а после отладки перевести пины в режим вывода. Для малоногих МК вполне себе вариант.pixar писал(а):лучше всего оставить SWD в покое.
Re: Переключение портов SWDIO
если серия и каждую копейку считать, то смысл есть.dosikus писал(а):А что так?
если проект хобби , всегда лучше иметь ноги про запас.
я на tssop20 задействовал как то всё вплоть до swdio , потом огребал ништяков .
больше стараюсь не повторять.
Re: Переключение портов SWDIO
pixar у меня в одном задействованы все пины , никаких "ништяков" не замечено. Все работает как и ожидалось...
Re: Переключение портов SWDIO
Ну и кто ж так делает? Разрабатывается и отлаживается на типа 051. И ног поболее и ресурса флэша. А в 030-й или в tssop20 запихивается когда уже всё готово.pixar писал(а): я на tssop20 задействовал как то всё вплоть до swdio , потом огребал ништяков .
больше стараюсь не повторять.
Re: Переключение портов SWDIO
На пинах SWD у меня были выходы . При отладке их не задействовал, отлаживал все остальное. Затем задействовал и пины с SWD ...


