08.09.2011, 19:34
|
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Столкнулся с проблемой в KEIL. Проект состоит из двух файлов: 'main.c' и 'led.c'. При компиляции вываливаются ошибки типа такой:
Цитата:
|
Build target 'TIM1_IRQ_TST'
assembling startup_stm32f10x_md_vl.s...
compiling main.c...
compiling led.c...
led.c(11): error: #20: identifier "GPIOC" is undefined
led.c: GPIOC-›BSRR = (1‹‹25);
led.c: ^
led.c(16): error: #20: identifier "GPIOC" is undefined
led.c: GPIOC-›BSRR = (1‹‹9);
led.c: ^
led.c: led.c: 0 warnings, 2 errors
Target not created
|
Если же из группы файлов проекта удалить файл led.c(в левом окошке Project, команда Remove File 'led.c'), то компиляция проходит успешно.
Смотрел хелп, но ничего интересного на эту тему нет.
Как правильно в кейле создавать многофайловые проекты?
|
|
|
|
08.09.2011, 20:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
uk8amk, При компиляции led.c, он не знает что такое GPIOC. Добавьте в led.c например
#include "stm32f10x_lib.h" , где включен "stm32f10x_map.h" описывающий адрес GPIOC.
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#ifdef _GPIOC
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
#endif /*_GPIOC */
Последний раз редактировалось andries5; 08.09.2011 в 20:38.
|
|
|
|
09.09.2011, 00:20
|
|
Вид на жительство
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
пытаюсь на STM32F100C4T6 помигать св.диодами - молчит как партизан, листинг бинарника на вид нормальный, подозреваю проблемы с стартап-кодом или линкером.
вот исходник, архив проекта - в аттаче:
Код:
|
GPIO_InitTypeDef GPIO_InitStructure;
RCC_ClocksTypeDef RCC_ClockFreq;
int main( void ) {
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// setup hardware
//setup( SETUP_MO_NORMAL );
// main loop
while (1) {
GPIO_SetBits(GPIOB, GPIO_ODR_ODR6 | GPIO_ODR_ODR7);
GPIO_SetBits(GPIOC, GPIO_ODR_ODR13 | GPIO_ODR_ODR14);
for (volatile uint32_t d=10000000UL; d; d--);
GPIO_ResetBits(GPIOB, GPIO_ODR_ODR6 | GPIO_ODR_ODR7);
GPIO_ResetBits(GPIOC, GPIO_ODR_ODR13 | GPIO_ODR_ODR14);
for (volatile uint32_t d=10000000UL; d; d--);
}
return 0;
} |
компилирую тулчейном Codesourcery в Eclipse, заливаю stm32flash.
Не поделитесь скриптом линкера и стартап-кодом под Low-dencity,Value-line ?
Последний раз редактировалось qwerky; 09.09.2011 в 00:24.
|
|
|
|
09.09.2011, 10:06
|
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
Добавьте в led.c например
#include "stm32f10x_lib.h" , где включен "stm32f10x_map.h" описывающий адрес GPIOC
|
.
Легче не стало. Теперь вот что говорит:
Цитата:
|
Build target 'TIM1_IRQ_TST'
assembling startup_stm32f10x_md_vl.s...
compiling main.c...
compiling led.c...
linking...
irq_tst.axf: Error: L6200E: Symbol LED_toggle multiply defined (by led.o and main.o).
irq_tst.axf: Finished: 0 information, 0 warning and 1 error messages.
Target not created
|
Если же вручную удалить этот файл как на рисунке, то компиляция проходит. Но этот вариант какбы не вариант т.к. я же должен видеть все файлы, участвующие в проекте.
На всякий случай вот сам проект.
|
|
|
|
09.09.2011, 11:18
|
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Господа знатоки! Начал тут осовение STM32 Помогите найти ошибочку в конфигурировании прерывания по переполнению таймера Т2. И такой вовпрсец: где и как прописываются функции вектора прерываний из какого файла CMSIS
// устанавливаем предделитель
TIM2-›PSC = 10000-1;
// задаем период ШИМ
TIM2-›ARR = 0xff;
TIM2-›DIER |= TIM_DIER_UIE;
// разрешаем работу и автоперезагрузку
TIM2-›CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
NVIC_SetPriority(TIM2_IRQn , 15);
NVIC_EnableIRQ(TIM2_IRQn);
__irq void TIM2_IRQn_IRQHandler(void)
{
if (TIM2-›SR & TIM_SR_UIF)
{
TIM2-›SR &= ~TIM_SR_UIF;
GPIOE-›BSRR|= GPIO_BSRR_BS15;
pause(100);
GPIOE-›BSRR|= GPIO_BSRR_BR15;
}
}
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
09.09.2011, 14:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
uk8amk, В main.c Вы добавили led.c через
#include "led.с"
а надо создать led.h и в нем описать функцию "void LED_toggle(void);"
а в main.c написать
#include "led.h"
таким образом в основном файле подключаются заголовочные файлы, в которых описаны используемые во внешних файлах функции.
|
|
|
|
09.09.2011, 15:25
|
|
Прописка
Регистрация: 09.12.2003
Сообщений: 116
Сказал спасибо: 5
Сказали Спасибо 23 раз(а) в 19 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от andries5
|
uk8amk, В main.c Вы добавили led.c через
#include "led.с"
а надо создать led.h и в нем описать функцию "void LED_toggle(void);"
а в main.c написать
#include "led.h"
таким образом в основном файле подключаются заголовочные файлы, в которых описаны используемые во внешних файлах функции.
|
Создать main.h в нем описать все хидеры
#include "led.h"
#include "keypad.h"
#include "ADC.h"
....
каждый сишный файл начинать со строки #include "main.h"
для небольших проектов это лучший способ.
|
|
|
Сказали "Спасибо" PlainUser
|
|
|
09.09.2011, 17:42
|
|
Прохожий
Регистрация: 07.10.2009
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
Собственно вот здесь https://kazus.ru/forums/showthread.p...ighlight=stm32
прошу о помощи.
Вопрос касается генерации исходного кода для stm32 из Matlab/Simulink
Если кто-то сталкивался с таким - буду очень признателен доброму совету.
Заранее благодарю!
|
|
|
|
09.09.2011, 19:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
slovak194, С matlab-ом не сталкивался, но в репорте он пишет, что во время вызова 'exit' происходит изменение папки, а это изменение не поддерживается. И потому сбрасывается. Т.к. нет matlab-а, то и нет возможности увидеть исходный текст.
|
|
|
|
09.09.2011, 20:06
|
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Есть ли для STM32 что-то типа калькулятора/визарда для быстрой конфигурации GPIO? Там тыкаешь в пины порта(вход-выход-AFIO), на выходе хекс забираешь. Хотел написать, но подумал может уже есть такое и не надо изобретать велосипед..
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:20.
|
|