Отключать совсем не обязательно, но если хочется, то отключить очень просто - снять 2 джампера (почитайте мануал на свой дискавери, Figure 8 - если не найдете).IRF840 писал(а): После программирования контроллера на этой плате нужно ли отключать ST-Link ... И если надо отключить - как это сделать?
STM32 новичку в ARM что к чему
Все будет только лучше, в крайнем случае - хуже.
- Реклама
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Ты пробовал ?coredumped писал(а): Отключать совсем не обязательно, но если хочется, то отключить очень просто - снять 2 джампера
Говорю же не только джамперы - RESET надо от STLink отсоединять ...
- Сообщения: 190
- Зарегистрирован: Пн сен 25, 2006 17:47:10
Мне как раз отключать и не хочется (еще новые прошивки ожидаются), просто не представляю, сколько STLink "кушает".В общем, если и перемычки не снимать - на выполнение программы это не влияет?
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Здравствуйте, подскажите: Подсоединяю ТСОП1736 к СТМ32L, если подать на тсоп питание 5В все нормально,если 3 вольта прерывание нет(в контроллере),в даташите питание от 2,5В,почему неработает? ноги на контроллере неправильно выставил(хочу чтобы от одного напряжения питались).У когонибудь получалос на одно напряжение настроить?
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
GPIOC->MODER &= ~GPIO_MODER_MODER0;//вход
GPIOC->OTYPER &= 0;//установка в пуш -ап
GPIOC->PUPDR |= GPIO_PUPDR_PUPDR0_0; // подтяжка сопротивления
GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR0;
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
GPIOC->MODER &= ~GPIO_MODER_MODER0;//вход
GPIOC->OTYPER &= 0;//установка в пуш -ап
GPIOC->PUPDR |= GPIO_PUPDR_PUPDR0_0; // подтяжка сопротивления
GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR0;
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
разобрался -питание идет от 4,5в. Другая ошибка выскакала:
PUBWEAK HardFault_Handler
SECTION .text:CODE:REORDER(1)
HardFault_Handler
B HardFault_Handler
Это когда поставил прерывание,только на этой строчке находиться, в чем проблемма?)
и еще один вопрос частенько начал выскакивать неможет найти stm32l1xx.c и начинаеться в асемблерном коде все,как можно исправить?
PUBWEAK HardFault_Handler
SECTION .text:CODE:REORDER(1)
HardFault_Handler
B HardFault_Handler
Это когда поставил прерывание,только на этой строчке находиться, в чем проблемма?)
и еще один вопрос частенько начал выскакивать неможет найти stm32l1xx.c и начинаеться в асемблерном коде все,как можно исправить?
- Реклама
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
здравствуйте,как я понял
void HardFault_Handler(void)
{return ;
/* Go to infinite loop when Hard Fault exception occurs */
}
Это прерывание как я понял, это по неизвестным нам причинам прерывание? почему-то у меня оно идет после void EXTI0_IRQHandler(void);
как его убрать?
void HardFault_Handler(void)
{return ;
/* Go to infinite loop when Hard Fault exception occurs */
}
Это прерывание как я понял, это по неизвестным нам причинам прерывание? почему-то у меня оно идет после void EXTI0_IRQHandler(void);
как его убрать?
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
а там нужно убрать флаг прерывания,чтобы он постоянно невозвращался?
- Сообщения: 20132
- Зарегистрирован: Чт сен 01, 2011 12:53:27
- Откуда: ТьмуТаракания. Почетный житель подмостовья
вах-вах, баня вам грозит, уважаемый.....
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
oleg63m писал(а):вах-вах, баня вам грозит, уважаемый.....
Всмысле?
можно запретить прерывание HardFault_Handler ? NVIC_DisableIRQ(-3);
Прчин появления HardFault может быть много, чаще всего - обращение к несуществующей области памяти.
В Вашем случае - скорее всего Вы забыли добавить вектор аппаратного прерывания в таблицу векторов. Те прерывание Вы разрешили, а обработчик прерывания подключить забыли. Копайте в этом направлении.
PS: Баня грозит за нарушение правил - низзя создавать сообщения сразу после своего же. Редактируйте свое последнее сообщение.
В Вашем случае - скорее всего Вы забыли добавить вектор аппаратного прерывания в таблицу векторов. Те прерывание Вы разрешили, а обработчик прерывания подключить забыли. Копайте в этом направлении.
PS: Баня грозит за нарушение правил - низзя создавать сообщения сразу после своего же. Редактируйте свое последнее сообщение.
Все будет только лучше, в крайнем случае - хуже.
- Сообщения: 20132
- Зарегистрирован: Чт сен 01, 2011 12:53:27
- Откуда: ТьмуТаракания. Почетный житель подмостовья
В том смысле баня, что Вы используете несколько постов подряд, вместо того, чтобы применять редактирование(правку).спящий писал(а):Всмысле?
Это является нарушением правил форума и грозит от..... вобщем помывкой в бане после предупреждения.
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Я думал что таблица прерывания в файле startup_stm32l1xx_md.s жестко прикреплена,или ее надо изменять?coredumped писал(а):Прчин появления HardFault может быть много, чаще всего - обращение к несуществующей области памяти.
В Вашем случае - скорее всего Вы забыли добавить вектор аппаратного прерывания в таблицу векторов. Те прерывание Вы разрешили, а обработчик прерывания подключить забыли. Копайте в этом направлении.
PS: Баня грозит за нарушение правил - низзя создавать сообщения сразу после своего же. Редактируйте свое последнее сообщение.
"обработчик прерывания подключить забыли" у меня сигнал прерывания EXTI0_IRQHandler(void); и он обробатывается в функции.
Вот еще одна интересная штука: в "пустом" проекте - где мало кода(чисто RC5 - для пульта) прерывание работает,поставил де букв побольше -непашет, хотя осталось также 2 прерывание. Тоесть программа нормально работает и через несколько секунд виснет,можно какнибудь отключить, выходить из нее,сбрасывать флаг? __enable_fiq (); - это неоно?
В обработчике прерывания pending flag сбрасываете (EXTI_ClearITPendingBit() )?
Если нет, то это может быть проблемой.
Еще проверьте, не разрушается ли у Вас стек. Может Вы в функциях используете локальные массивы и размера стека банально не хватает?
Если нет, то это может быть проблемой.
Еще проверьте, не разрушается ли у Вас стек. Может Вы в функциях используете локальные массивы и размера стека банально не хватает?
Все будет только лучше, в крайнем случае - хуже.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
coredumped писал(а):В обработчике прерывания pending flag сбрасываете (EXTI_ClearITPendingBit() )?
Если нет, то это может быть проблемой.
Еще проверьте, не разрушается ли у Вас стек. Может Вы в функциях используете локальные массивы и размера стека банально не хватает?
Возможно проблемма была то что я из прерывания вызывал функцию -возможна ли проблемма?
И еще один важный для меня вопрос: Сделал устройтво ,программа в Iar как запустить чтобы он работал без программатора(diskovery), до этого нажимал зеленый треугольник.
Если точнее как чтобы без отладчика(swd),может какуюнибудь ногу надо подсоединить?чтобы при подачи питание запускалась программа.
Да как бы при подключении питания и происходит исполнение прошивки. Точнее процедуры main(по умолчанию)
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Так вот когда прошиваеш при подключеном дисковере работаеш, отсоединяеш и подаеш вновь питание -неработает.Может нужен какойнибудь reset?The_D писал(а):Да как бы при подключении питания и происходит исполнение прошивки. Точнее процедуры main(по умолчанию)
1. У Вас, возможно, стоит в опциях проекта загрузка и исполнение в RAM. Где это исправить в иар я не знаю, тк использую Кейл. Ищите в опциях проекта.
2. Еще, может быть, у Вас нога boot0 в воздухе болтается или сидит на питании - это приводит к запуску встроенного бутлоадера. Нужно притянуть boot0 к земле. Хотя, в Дискаверях по умолчанию boot0 притянут к земле, но есть перемычка. Если Вы ее не снимали, то действуйте по п.1. Но, советую проверить
2. Еще, может быть, у Вас нога boot0 в воздухе болтается или сидит на питании - это приводит к запуску встроенного бутлоадера. Нужно притянуть boot0 к земле. Хотя, в Дискаверях по умолчанию boot0 притянут к земле, но есть перемычка. Если Вы ее не снимали, то действуйте по п.1. Но, советую проверить
Все будет только лучше, в крайнем случае - хуже.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Так вот в том дело что я хочу без дескавери устройство, оно программируеться 3 проводками: тактовая частота, данные и земля, или обязательно нужен BOOT? или ресет?
В iare ненашел - никто чтоли непрошивал устройство в ИАРе?)
В iare ненашел - никто чтоли непрошивал устройство в ИАРе?)
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
подал землю NRST -заработало,как сделать это программно? просто уже невариант переделывать устройство -возможно ли это?
Настала и моя очередь задать чайниковский вопрос. Понадобилось использовать DAC. Пишу простейшую программу, а не работает ничего.
Запускаю на STM32F103RBT6.
Конфигурировал частоту кристалла и на 72 MHz и на 24 MHz. Ничего не помогает. Несколько сэмпликов скачивал с сети - тоже нуль на выходе всегда
PS: Все оказалось просто - в STM32F103RBT6 нет DAC
Спойлер
Код: Выделить всё
int main(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DAC_InitTypeDef DAC_InitStructure;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R, 1024);
while (1)
{
}
}
Конфигурировал частоту кристалла и на 72 MHz и на 24 MHz. Ничего не помогает. Несколько сэмпликов скачивал с сети - тоже нуль на выходе всегда
PS: Все оказалось просто - в STM32F103RBT6 нет DAC


