23.01.2011, 22:01
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от andries5
|
dosikus, Создаю папку проекта например "Test", в нее копирую
STM32_Init.c
STM32_Init.h
STM32_Reg.h
далее в кейле создаю проект в данной папке. В ней же создаю "main.c"
|
Забыл про startup .
Выложи целиком проект , плиз...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 23.01.2011 в 22:11.
|
|
|
|
23.01.2011, 22:03
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от gromovi
|
НЕ ИНФОРМАТИВНО! куча писанины, нельзя ли как то более человекопонятно сделать? типо
порт на выход(регистр = чему то там)
|
Глянь у меня макросы, не для кейла, но может будут полезны
http://ziblog.ru/category/mikrokontrolleryi/stm32/
|
|
|
Эти 2 пользователя(ей) сказали Спасибо zheleznjakov за это сообщение:
|
|
|
23.01.2011, 22:25
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от andries5
|
dosikus, Создаю папку проекта например "Test", в нее копирую
STM32_Init.c
STM32_Init.h
STM32_Reg.h
далее в кейле создаю проект в данной папке. В ней же создаю "main.c"
#include "stm32f10x.h"
#include "STM32_Init.h"
#define Led_blue_off GPIOC-›BRR =GPIO_BRR_BR8
#define Led_blue_on GPIOC-›BSRR =GPIO_BSRR_BS8
#define Led_green_off GPIOC-›BRR =GPIO_BRR_BR9
#define Led_green_on GPIOC-›BSRR =GPIO_BSRR_BS9
#define Button_User GPIOA-›IDR & GPIO_IDR_IDR0
int main(void)
{
Led_green_on;
Led_blue_on;
while (1)
{
}
}
в "STM32_Init.c" в строке 5529 меняю имя функции "stm32_Init" на "SystemInit".
Когда открыт "STM32_Init.c" на вкладке его внизу есть "Configuration Wizard".
Нажимаю на ней и в данном мастере удобно настроить порты, частоту, таймеры (правда только четыре), RTC, wdg, USART. Компилирую и радуюсь как дитя. Для симуляции меняю имя процессора на stm32f103RB и тогда в симуляторе в периферии смотрю состояние и частоты и портов и чего угодно.
Но все-же видимо буду ломать голову над "STM32F10x_StdPeriph_Driver". Уже что-то вырисовывается.
|
Гы... В симуляторе то оно может и будет работать ...
В Discovery валимся а HardFalut .
Выложи проект , может у мну что не так...
__________________
Осторожно , злой кот
|
|
|
|
23.01.2011, 22:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от dosikus
|
Забыл про startup
|
Не забыл. При создании проекта кейл сам добавляет его в зависимости от выбранного МК.
|
|
|
|
23.01.2011, 22:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от andries5
|
симуляторе то оно может и будет работать ...
В Discovery валимся а HardFalut .
|
Работает и в симуляторе, и при установке stm32f100rb device создает hex файл работающий на Discovery. Проверенно.
При создании проекта указывать device stm32f100rb, как в Discovery.
|
|
|
|
23.01.2011, 22:40
|
|
Заблокирован
Регистрация: 12.09.2009
Сообщений: 420
Сказал спасибо: 148
Сказали Спасибо 166 раз(а) в 118 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
почистил system_stm32f10x.c теперь все более менее проясняется.
Код:
|
#include "stm32f10x.h"
static void SetSysClockTo24(void);
void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC-›CR |= (uint32_t)0x00000001;
/* Reset HSEON, CSSON and PLLON bits */
RCC-›CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC-›CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC-›CFGR &= (uint32_t)0xFF80FFFF;
/* Disable all interrupts and clear pending bits */
RCC-›CIR = 0x009F0000;
/* Reset CFGR2 register */
RCC-›CFGR2 = 0x00000000;
/* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
/* Configure the Flash Latency cycles and enable prefetch buffer */
SetSysClockTo24();
}
static void SetSysClockTo24(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
/* Enable HSE */
RCC-›CR |= ((uint32_t)RCC_CR_HSEON);
/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC-›CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSEStartUp_TimeOut));
if ((RCC-›CR & RCC_CR_HSERDY) != RESET)
{
HSEStatus = (uint32_t)0x01;
}
else
{
HSEStatus = (uint32_t)0x00;
}
if (HSEStatus == (uint32_t)0x01)
{
/* HCLK = SYSCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK */
RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
/* PLL configuration: = (HSE / 2) * 6 = 24 MHz */
RCC-›CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC-›CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6);
/* Enable PLL */
RCC-›CR |= RCC_CR_PLLON;
/* Wait till PLL is ready */
while((RCC-›CR & RCC_CR_PLLRDY) == 0)
{
}
/* Select PLL as system clock source */
RCC-›CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC-›CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
/* Wait till PLL is used as system clock source */
while ((RCC-›CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
{
}
}
else
{ /* If HSE fails to start-up, the application will have wrong clock
configuration. User can add here some code to deal with this error */
}
} |
и всего то надо для старта.
Последний раз редактировалось gromovi; 23.01.2011 в 22:49.
|
|
|
|
23.01.2011, 22:42
|
|
Заблокирован
Регистрация: 12.09.2009
Сообщений: 420
Сказал спасибо: 148
Сказали Спасибо 166 раз(а) в 118 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
сам ресурс полезен. с гугла хрен найдешь.
|
|
|
|
23.01.2011, 22:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А я больше недели сидел, не мог понять. В документации все из одного файла в другой надо лезть и искать нужное. А кто разобрался раньше, говорят: там не сложно, читайте даташит. Пришлось самому. Сейчас разбираюсь с STD_periph_drivers. Там хотя-бы инициализация периферии в правильном порядке. А уж использование зависит от дальнейшей программы.
Последний раз редактировалось andries5; 23.01.2011 в 23:14.
|
|
|
|
23.01.2011, 23:02
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
andries5, Благодарствую , все заработало.
Но что меня раздражает , то что делал все так же - облом, и в чем причина не понятно...
Сейчас тупо скопировал файлы из твоего проекта - все заработало .
Ну вот и разобрались , эти файлы у меня были с примеров с сайта Keil .
С ними не работает , с твоими все ок . Где брал ?
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 23.01.2011 в 23:09.
|
|
|
|
23.01.2011, 23:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,812
Сказал спасибо: 126
Сказали Спасибо 605 раз(а) в 422 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от dosikus
|
Где брал ?
|
Уже и не помню. Голова крУгом ходила. На Easyelectronics у DiHalt-а, кажется.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:14.
|
|