реклама на сайте
подробности

 
 
> Что использовать при создании первой программы для STM32
ViKo
сообщение Jul 10 2009, 08:14
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Начинаю писать для STM32 в Keil uVision3. Понятно, что будет файл типа main.c. А что вызывать из него для инициализации процессора? startup_stm32f10x_hd.s - инициализация стека и таблица векторов прерываний. А дальше? В каталоге Keil\ARM\Boards\ST\EK-STM32F есть примеры, в которых в файлах STM32_Init.c есть Configuration Wizard, в котором можно настроить всю периферию, частоты, и т.д. А в библиотеке stm32f10x_stdperiph_lib, скачанной с сайта ST, ничего подобного нет. Да и изменить в них ничего нельзя, у них атрибут "только для чтения". Что же, использовать их только как пример, писать свои файлы? Подскажите примерную структуру проекта, а то накидал файлов, что уже заблудился в них.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Jul 13 2009, 11:05
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Кто то для инициализации пользуется фирменными библиотеками.
Я привык работать напрямую с регистрами - делов-то (правда, для этого надо хорошенько "вкурить" мануал).

Совсем необязательно для инициализации создавать отдельный файл - достаточно всего лишь одной функции.
Например:
CODE
void Init()
{

//Enable SysTick as periodic timer
SysTick->LOAD = SYSTICK_PERIOD;
SysTick->CTRL = SysTick_CTRL_ENABLE | SysTick_CTRL_CLKSOURCE | SysTick_CTRL_TICKINT;

//configure clocks
FLASH->ACR |= FLASH_ACR_LATENCY_1; //flash latency = 2 wait states
RCC->CR |= RCC_CR_HSEON;
RCC->CFGR = RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLSRC | RCC_CFGR_PPRE1_DIV2;
while (!(RCC->CR & RCC_CR_HSERDY));
RCC->CR |= RCC_CR_PLLON;
while (!(RCC->CR & RCC_CR_PLLRDY));
RCC->CFGR |= RCC_CFGR_SW_PLL;
while ((RCC->CFGR & (RCC_CFGR_SWS_HSE | RCC_CFGR_SWS_PLL)) != RCC_CFGR_SWS_PLL);

//Enable clocking of the peripherals
RCC->APB2ENR = RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPCEN |
RCC_APB2ENR_IOPDEN | RCC_APB2ENR_SPI1EN;
RCC->APB1ENR = RCC_APB1ENR_SPI2EN | RCC_APB1ENR_USBEN;
RCC->AHBENR = RCC_AHBENR_FLITFEN | RCC_AHBENR_SRAMEN | RCC_AHBENR_DMA1EN;

//SPI1
SPI1->CR1 = SPI_CR1_DFF | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR | SPI_CR1_BR_0 | SPI_CR1_SPE; //18 Mbit @ 72 MHz

//SPI2
SPI2->CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR | SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0 | SPI_CR1_SPE; //281 Kbit @ 72 MHz
SPI2->CR2 = SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN; //enable DMA support

//setup ports
//PortA
GPIOA->ODR = PIN15 | PIN13 | PIN9 | PIN6;
GPIOA->CRH = (IN_Pull << 28) | /* PIN15 */
(IN_Pull << 24) | /* PIN14 */
(IN_Pull << 20) | /* PIN13 */
(IN_Pull << 16) | /* PIN12 */
(IN_Pull << 12) | /* PIN11 */
(OUT_PP << 8) | /* PIN10 */
(OUT_PP << 4) | /* PIN9 */
(OUT_PP << 0); /* PIN8 */
GPIOA->CRL = (OUT_AltPP << 28) | /* PIN7 */
(OUT_PP << 24) | /* PIN6 */
(OUT_AltPP << 20) | /* PIN5 */
(IN_Pull << 16) | /* PIN4 */
(IN_Pull << 12) | /* PIN3 */
(IN_Pull << 8) | /* PIN2 */
(IN_Pull << 4) | /* PIN1 */
(IN_Pull << 0); /* PIN0 */
}
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 13 2009, 12:30
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(sonycman @ Jul 13 2009, 14:05) *
Кто то для инициализации пользуется фирменными библиотеками.
Я привык работать напрямую с регистрами - делов-то (правда, для этого надо хорошенько "вкурить" мануал).

Совсем необязательно для инициализации создавать отдельный файл - достаточно всего лишь одной функции.


А регистры, адреса тоже должны быть где-то расписаны, например, в файле stm32f10x_map.h, который сам уже имеет немалый размер.
Т.е. без библиотек не обойтись, наверное. Нужно включить файлик stm32f10x_lib.h, а остальное само прилепится.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 00:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01294 секунд с 7
ELECTRONIX ©2004-2016