|
|
  |
STM32F0+Keil=простой старт, Помогите начать работать с АРМ Cortex M0 |
|
|
|
Jul 21 2013, 11:30
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(toweroff @ Jul 21 2013, 13:38)  глобальная переменная. Декремент смотреть в прерывании системного таймера объявлена в main.c (как вы ищите - непонятно) Переменную нашел в мейн . Теперь не найду где выполняется декремент.. Все, нашел! Урааааааааа!
|
|
|
|
|
Jul 21 2013, 12:10
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421

|
Все по своим отдельным файлам, не люблю когда все в одном в виде каши. Думаю так удобнее.
|
|
|
|
|
Jul 21 2013, 12:23
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(andries5 @ Jul 21 2013, 15:10)  Все по своим отдельным файлам, не люблю когда все в одном в виде каши. Думаю так удобнее. А скажите пожалуйста, с какой частотой происходит прерывание системного таймера? И как например задействовать Код void TIM17_IRQHandler(void) { } Это прерывание? Достаточно вбить туда переменную? Подозреваю, что нужны еще дополнительные телодвижения  Посмотрел даташит на МК, и я просто в шоке  Такая куча возможностей!!! Таймеров дофига и всего прочего
|
|
|
|
|
Jul 21 2013, 12:30
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421

|
Цитата(Artos5 @ Jul 21 2013, 15:15)  А скажите пожалуйста, с какой частотой происходит прерывание системного таймера? И как например задействовать Код void TIM17_IRQHandler(void) { } Это прерывание? Достаточно вбить туда переменную? Подозреваю, что нужны еще дополнительные телодвижения  Прерывание системного таймера происходит согласно указанию SysTick_Config(SystemCoreClock / 1000); //1ms Если делить на 10000, то будет 0.1ms. Здесь можно изменить значение по своему усмотрению, в пределах возможного. В Keil нажав правую кнопку на непонятной переменной или функции, выбираете в меню "Go To Definition Of '...' " и попадаете в место ее определения. Очень удобно. Да это прерывание, Прерывание Timer17 и для этого сначала нужно проинициализировать таймер, включить режим прерываний и так далее.
|
|
|
|
|
Jul 21 2013, 13:01
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(andries5 @ Jul 21 2013, 15:30)  Прерывание системного таймера происходит согласно указанию SysTick_Config(SystemCoreClock / 1000); //1ms Если делить на 10000, то будет 0.1ms. Здесь можно изменить значение по своему усмотрению, в пределах возможного. В Keil нажав правую кнопку на непонятной переменной или функции, выбираете в меню "Go To Definition Of '...' " и попадаете в место ее определения. Очень удобно. Да это прерывание, Прерывание Timer17 и для этого сначала нужно проинициализировать таймер, включить режим прерываний и так далее. Спасибо Вам за помощь! Буду дальше пробовать разбираться  А сколько времени происходит вход в прерывание и его выполнение а потом выход из него?
Сообщение отредактировал Artos5 - Jul 21 2013, 13:00
|
|
|
|
|
Jul 21 2013, 14:23
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421

|
Цитата(Artos5 @ Jul 21 2013, 16:01)  А сколько времени происходит вход в прерывание и его выполнение а потом выход из него? Когда отладку включал с платой на stm32f103 через JTAG отладчик, то видел время каждого шага. Сейчас на этой плате не знаю. Я сам только учусь.
|
|
|
|
|
Jul 21 2013, 16:22
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(hd44780 @ Jul 21 2013, 18:58)  Я имел в виду на компе из кейла шьёшь? Попробуй ST-шную утилиту - http://www.st.com/web/en/catalog/tools/PF258168#header поставить. Только кейл перед этим закрой. Блин... закрыл Кейл. Запустил СТ Линк. И он отказывается дружить с программатором... все равно не видит программатор. Хотя система видит устройство прекрасно. Начал шить СТ Линк, после шаманства... Поставил в настройках Connect under reset. Что то не могу вкурить что это произошло... кейл по прежнему отказывается шить... Теперь Кейл пишет такую херню: flash download failed - Target DLL has been canсelledЧто то СТМ начинает тошнить  Что ему то не хватает?!
Сообщение отредактировал Artos5 - Jul 21 2013, 16:23
|
|
|
|
|
Jul 21 2013, 16:40
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421

|
В свойствах проекта, на вкладке Utilites, в св-вах St-Link (settings), выбран STM32F05x Flash?
|
|
|
|
|
Jul 21 2013, 16:46
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(andries5 @ Jul 21 2013, 19:40)  В свойствах проекта, на вкладке Utilites, в св-вах St-Link (settings), выбран STM32F05x Flash? Выбран ST Link debugger и его поменять нельзя, он не активный Оно шилось нормально , шилось-шилось пока не "заглючило" резко . Резко начал ругаться Кейл...
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 21 2013, 16:47
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421

|
Нажать левой кнопкой на Use Target Drive for Flash Programming.
|
|
|
|
|
Jul 21 2013, 17:00
|
Частый гость
 
Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613

|
Цитата(andries5 @ Jul 21 2013, 19:47)  Нажать левой кнопкой на Use Target Drive for Flash Programming. Спасибо Вам за наводку! Заработало! Только не могу понять почему оно заглючило!  Есть еще серьезная проблема... Не работает полностью PORTB инициализирую так: Код void Init_GPIO(void) { /* Private typedef ---------------------------------------------------------*/ GPIO_InitTypeDef GPIO_InitStruct_butt; GPIO_InitTypeDef GPIO_InitStruct_led; //GPIO_InitTypeDef GPIO_InitStruct_led1; /*Enable or disable the AHB peripheral clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); /** Configure pins as GPIO for USER button PA0 ------> GPIO_Input */
/* Configure Button pin as input */ GPIO_InitStruct_butt.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStruct_butt.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct_butt.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOA, &GPIO_InitStruct_butt); /** Configure pins as GPIO for led PC8 ------> GPIO_Output blue PC9 ------> GPIO_Output green */
/*Configure GPIO pin */ GPIO_InitStruct_led.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStruct_led.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct_led.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct_led.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct_led.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC, &GPIO_InitStruct_led); /*Configure GPIO pin PORTB*/ GPIO_InitStruct_led.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_InitStruct_led.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct_led.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct_led.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStruct_led.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStruct_led); } и Код #define LED_Greeen_On (GPIOC->BSRR = GPIO_Pin_9) #define LED_Blue_On (GPIOC->BSRR = GPIO_Pin_8) #define LED_Greeen_Off (GPIOC->BRR = GPIO_Pin_9) #define LED_Blue_Off (GPIOC->BRR = GPIO_Pin_8) #define LED_Green_Toggle (GPIOC->ODR ^= GPIO_Pin_9) #define LED_Blue_Toggle (GPIOC->ODR ^= GPIO_Pin_8) #define Butt_User_Get_State (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)) // led out config #define DATA_LED_1 (GPIOB->BSRR = GPIO_Pin_13) #define DATA_LED_0 (GPIOB->BRR = GPIO_Pin_13) #define CLOCK_LED_1 (GPIOB->BSRR = GPIO_Pin_14) #define CLOCK_LED_0 (GPIOB->BRR = GPIO_Pin_14) #define LATCH_LED_1 (GPIOB->BSRR = GPIO_Pin_15) #define LATCH_LED_0 (GPIOB->BRR = GPIO_Pin_15) Если настраиваю другой порт например: PORTA То все работает... Подозреваю что умер у меня в отладчике порт В
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|