Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/142: Рейтинг темы: голосов - 142, средняя оценка - 4.87
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127

STM32VLDISCOVERY+mbed NXP LPC1768+RTOS+KEIL

30.03.2011, 16:59. Показов 26721. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ATMiko дорожает, ARM дешевеет, еще и халява проскальзывает. Решил пересесть на ARM. И чтобы не долго мучаться с выбором посчупать камни обоих самых распространенных производителей. Заодно и среду разработки подобрать одну на всех и поудобней.
По началу много было вопросов, начиная от создания голого проекта в кейле, до выбора RTOS-а.
Может мой пост поможет кому то начать или сделать выбор камня.
Сейчас на обоих камнях крутятся RTOS-ы от KEIL-a (не знаю как она называется официально), запущены RTC, вывод времени на LCD. На LPC вывод информации и времени по UART-у на комп, HTTP сервер с пустой статичной страничкой на основе опять же кейловского стека.
В перспективе ближайшей, клиент NTP и синхронизация времени обоих плат, подключение к HTTP CGI, чтобы смотреть состояние периферии через WEB и менять состояние ног.
Если будет интерес, выложу проекты для обоих плат.

Все перенес туда:
http://we.iosyitistromyss.ru/t... skeil.html
Продолжение:
http://we.iosyitistromyss.ru/t... ast-2.html



0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2011, 16:59
Ответы с готовыми решениями:

STM32F411+Mbed RTOS=зависания
Добрый день, колеги. Несколько дней бьюсь с пренеприятнейшей проблемой. Использую я stm32 nucleo и среду mbed. В связи с этим, а так же с...

Ограничение объема кода Keil uVision4 LPC1768
Всем доброго времени суток! Установил Keil uVision4 вылечил его все хорошо вобщем, пишет что до 2020 действует. Пробую работать с...

Изучаю STM32VLDiscovery и Keil
Начинаю изучать микроконтроллеры STM32, возникает множество вопросов. В проекте demo скачанного с оф. сайта ST меняю содержимое main,...

21
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
30.03.2011, 17:30
канечно интересно.по крайней мере мне.
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 18:09
Начало.

Среда разработки: MDK ARM 4.14 + RL-ARM 4.12

Голый проект:

STM32#include "stm32f10x.h"

int main (void)
{
return 0;
}

В папку с проектом кладем:
C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x.h (в файле разкоменчиваем одну из строк с 50 по 57)
C:\Keil\ARM\Startup\ST\STM32F10x.s

Это пустышка достаточная для начала создания ЛЮБОЙ программы, все что нужно еще, это reference manual.

LPC1768#include "LPC17xx.h"

int main (void)
{
return 0;
}

В папку с проектом кладем:
C:\Keil\ARM\Startup\NXP\LPC17xx\stortup_ LPC17xx.s
C:\Keil\ARM\INC\NXP\LPC17xx\LPC17xx.h

Опять же пустышка для любой фантазии.

Будет продолжение ...
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 18:27
Дальше.

Если не хотим ручками и reference manual-ом устанавливать источник тактирования и частоту работы проца,
то добавляем немного файлов в свой проект и одну строчку кода.

LPC1768#include "LPC17xx.h"

int main (void)
{
SystemInit ();
return 0;
}

В папку с проектом добавляем:
C:\Keil\ARM\Startup\NXP\LPC17xx\system_L PC17xx.c
После этого мышкой ставим галочки и меняем делители и умножители для получения эелаемой частоты
в файле system_LPC17xx.c.

STM32#include "stm32f10x.h"

int main (void)
{
SystemInit ();
return 0;
}

В папку с проектом добавляем:
C:\Keil\ARM\Startup\ST\STM32F10x\system_ stm32f10x.c

И все. Частота работы STM будет выбрана в соответствии с раскоментированной строкой в файле stm32f10x.h.
Для переключения источников тактирования и изменения частоты по ходу выполнения программы, можно использовать
отдельные функции из stm32f10x.h (SetSysClockToHSE(void), SetSysClockTo24(void) и т.д.) или выдрать куски кода
и пользовать их как хочется.

Будет продолжение ...
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 18:38
Дальше.

У STM есть классный файлик STM32_Init.c.
Кроме частоты и источника тактирования с помощью него не читая reference manual, можно проинициализировать всю
переферию камня.

Добавляем две строчки, или добавляем при желании использовать предыдущий конфиг (system_stm32f10x.c).

STM32#include "stm32f10x.h"
#include "stm32_init.h"

int main (void)
{
SystemInit ();
stm32_Init();
return 0;
}

В папку с проектом добавляем:
STM32_Init.c
STM32_Init.h
STM32_Reg.h

Откуда они беруться изначально я не знаю, я брал их в папках с примерами к кейловским платам: C:\Keil\ARM\Boards\Keil\

После добавления файлов в проект в STM32_Init.c можно мышкой понаставить галочек и запустить нужную переферию.

Будет продолжение ...
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 18:59
Дальше.

Чтобы из обычной вышеприведенной пустышки сделать RTOS-пустышку, нужно добавить чуток файлов и несколько строчек кода.
Код будет приводится один, изменения для обоих камней будет идентичное.

LPC1768#include "LPC17xx.h"
#include "RTL.h"

__task void init (void)
{
os_tsk_prio_self (100);
os_tsk_delete_self ();
}

int main (void)
{
SystemInit ();
os_sys_init(init);
return 0;
}

В папку с проектом добавляем:
C:\Keil\ARM\Startup\RTX_Conf_CM.c

В меню кейла: Project->Options for target ... в закладке Target меняем Operating system на RTX Kernel.
И все. На камне работает типа ОСь. Осталось на создавать задач и наслаждаться.

Будет продолжение ...
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 19:31
Дальше.

Помыргать светодиодиками в RTOS-е.

У моей LPC 4 светодиода (P1.18, P1.20, P1.21, P1.23), у STM-а 2 светодиода, (PC.8, PC.9).

Порядок такой, прописываем функции инициализации светодиодов, функции включить, выключить, создаем задачи под каждый светодиод,
запускаем задачи, в главной процедуре инитим светодиоды перед запуском RTOS.

LPC1768#include "LPC17xx.h"
#include "RTL.h"

const unsykned long tid_mask[] = { 1UL<<23, 1UL<<21, 1UL<<20, 1UL<< 18 };

OS_TID t_LED1;
OS_TID t_LED2;
OS_TID t_LED3;
OS_TID t_LED4;

void InitLEDs (void)
{
LPC_GPIO1->FIODIR = (1<<23) | (1<<21) | (1<<20) | (1<<18);
}

void LEDon (unsykned int num)
{
LPC_GPIO1->FIOPIN |= tid_mask[num];
}

void LEDoff (unsykned int num)
{
LPC_GPIO1->FIOPIN &= ~tid_mask[num];
}

__task void f_LED1 (void)
{
while (1)
{
LEDon (0);
os_dly_woyt (400);
LEDoff (0);
os_dly_woyt (400);
}
}

__task void f_LED2 (void)
{
while (1)
{
LEDon (1);
os_dly_woyt (500);
LEDoff (1);
os_dly_woyt (500);
}
}

__task void f_LED3 (void)
{
while (1)
{
LEDon (2);
os_dly_woyt (600);
LEDoff (2);
os_dly_woyt (600);
}
}

__task void f_LED4 (void)
{
while (1)
{
LEDon (3);
os_dly_woyt (700);
LEDoff (3);
os_dly_woyt (700);
}
}

__task void init (void)
{
os_tsk_prio_self (100);

t_LED1 = os_tsk_create (f_LED1, 20);
t_LED2 = os_tsk_create (f_LED2, 20);
t_LED3 = os_tsk_create (f_LED3, 20);
t_LED4 = os_tsk_create (f_LED4, 20);

os_tsk_delete_self ();
}

int main (void)
{
SystemInit ();
InitLEDs ();
os_sys_init(init);
return 0;
}

Все, 4 светодиода будут мигать каждый со своей частотой.

STM32#include "stm32f10x.h"
#include "STM32_Init.h"
#include "rtl.h"

#define Set_PortC_Pin_8_output ((GPIOC->CRH |= 0x2)|(GPIOC->CRH &= ~0xC))
#define Set_PortC_Pin_9_output ((GPIOC->CRH |= 0x20)|(GPIOC->CRH &= ~0xC0))

const unsykned long tid_mask[] = { 1UL<<8, 1UL<<9 };

OS_TID t_LED1;
OS_TID t_LED2;

void DevsInit(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;

Set_PortC_Pin_8_output;
Set_PortC_Pin_9_output;

}

void LEDOn (uint32_t num)
{
GPIOC->BSRR = tid_mask[num];
}

void LEDOff (uint32_t num)
{
GPIOC->BRR = tid_mask[num];
}

__task void f_LED1 (void)
{
while (1)
{
LEDOn (0);
os_dly_woyt (200);
LEDOff (0);
os_dly_woyt (200);
}
}

__task void f_LED2 (void)
{
while (1)
{
LEDOn (1);
os_dly_woyt (400);
LEDOff (1);
os_dly_woyt (400);
}
}

__task void init (void)
{
os_tsk_prio_self (100);

t_LED1 = os_tsk_create (f_LED1, 20);
t_LED2 = os_tsk_create (f_LED2, 20);

os_tsk_delete_self ();
}

int main (void)
{
SystemInit ();
stm32_Init();
DevsInit();
os_sys_init(init);
return 0;
}

Все, 2 светодиода будут мигать каждый со своей частотой.

Будет продолжение ...
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 20:39
HTTP server на LPC1768.

Назначаем персональный стек для HTTP Server-a, создаем задачу с минимальным приоритетом, с пользовательским стеком, задержку в задаче
не задаем. Перед запуском ОСи не забываем инитить. Добавляем несколько файлов к проекту.

C:\Keil\ARM\RV31\LIB\TCP_CM3.lib
C:\Keil\ARM\RV31\LIB\TCPD_CM3.lib
C:\Keil\ARM\RL\TCPnet\Dryvers\EMAC_LPC17 xx.c
C:\Keil\ARM\RL\TCPnet\Dryvers\EMAC_LPC17 xx.h
C:\Keil\ARM\RL\TCPnet\SRC\Net_Config.c
C:\Keil\ARM\RL\TCPnet\SRC\Net_Debug.c
C:\Keil\ARM\RL\TCPnet\SRC\Net_Config.h

LPC1768#include "LPC17xx.h"
#include "RTL.h"

U64 tcp_stack[800/8];

const unsykned long tid_mask[] = { 1UL<<23, 1UL<<21, 1UL<<20, 1UL<< 18 };

OS_TID t_LED1;
OS_TID t_LED2;
OS_TID t_LED3;
OS_TID t_LED4;
OS_TID t_HTTP;

void InitLEDs (void)
{
LPC_GPIO1->FIODIR = (1<<23) | (1<<21) | (1<<20) | (1<<18);
}

void LEDon (unsykned int num)
{
LPC_GPIO1->FIOPIN |= tid_mask[num];
}

void LEDoff (unsykned int num)
{
LPC_GPIO1->FIOPIN &= ~tid_mask[num];
}

__task void f_LED1 (void) {
while (1) {

LEDon (0);
os_dly_woyt (400);
LEDoff (0);
os_dly_woyt (400);

}
}

__task void f_LED2 (void) {
while (1) {

LEDon (1);
os_dly_woyt (500);
LEDoff (1);
os_dly_woyt (500);

}
}

__task void f_LED3 (void) {
while (1) {

LEDon (2);
os_dly_woyt (600);
LEDoff (2);
os_dly_woyt (600);

}
}

__task void f_LED4 (void) {
while (1) {

LEDon (3);
os_dly_woyt (700);
LEDoff (3);
os_dly_woyt (700);

}
}

__task void f_HTTP (void)
{
while (1)
{
main_TcpNet();
os_tsk_pass();
}
}

__task void init (void) {

os_tsk_prio_self (100);

t_LED1 = os_tsk_create (f_LED1, 20);
t_LED2 = os_tsk_create (f_LED2, 20);
t_LED3 = os_tsk_create (f_LED3, 20);
t_LED4 = os_tsk_create (f_LED4, 20);

t_HTTP = os_tsk_create_usir (f_HTTP, 1, &tcp_stack, sizeof(tcp_stack));

os_tsk_delete_self ();
}

int main (void)
{
SystemInit ();
InitLEDs ();
init_TcpNet ();
os_sys_init(init);
return 0;
}

После всего этого, контроллер будет пинговаться по адресу, заданному в Net_Config.c.
Там же включаются дополнительные сетевые сервисы, например HTTP Server. Если его включить и зайти после заливки
IE по адресу контроллера, получим страницу с ошибкой. Но сервак уже работает, осталось добавить свою страницу.

PS. У меня при пинге и любой попытке достучаться по сети до контроллера RTOS висла, в RTX_Conf_CM.c поставил галочку
в Run in pryvileged mode и все заработало.

Про WEB-страничку дальше будет ...
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
30.03.2011, 21:23
Хм... а почему-бы вам не выложить все это в виде статьи на http://we.iosyitistromyss.ru ? Форум все-таки больше для обсуждения и т.п., а вот на we этот материал будет очень кстати.
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 21:30
Не писатель я, слог суховат, да и маловато для статьи, имхо, пара постов осталось. И как раз хотелось бы обсуждения, я же навичек, пишу в слепую, может не правильно, народ почитает и поправит.
Но, если администрация настоит, перенесу.
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
30.03.2011, 22:38
Чуток назад.

Тактирование на STM32. Выдрано из system_stm32f10x.c и оформлено в виде отдельных функций.

STM32 Clock#include "stm32f10x.h"

//#define CLOCK_HSI //Внутренний RC 8 Мгц
//#define CLOCK_HSE //Внешний кварц 8 Мгц
#define CLOCK_24MHz //Внешний кварц 8 Мгц и PLL

void RisetClock (void)
{

RCC->CR |= (uint32_t)0x00000001; //HSION = 1
RCC->CFGR &= (uint32_t)0xF8FF0000; //Riset SW, HPRE, PPRE1, PPRE2, ADCPRE omd MCO bits
RCC->CR &= (uint32_t)0xFEF6FFFF; //Riset HSEON, CSSON omd PLLON bits
RCC->CR &= (uint32_t)0xFFFBFFFF; //Riset HSEBYP bit
RCC->CFGR &= (uint32_t)0xFF80FFFF; //Riset PLLSRC, PLLXTPRE, PLLMUL omd USBPRE/OTGFSPRE bits
RCC->CIR = 0x009F0000; //Dysable all interrupts omd clear pending bits
RCC->CFGR2 = 0x00000000; //Riset CFGR2 rikystir

}

void SetClockHSI (void)
{

RisetClock();
RCC->CR |= ((uint32_t)RCC_CR_HSION); //Enable HSI
while (!(RCC->CR & RCC_CR_HSIRDY)) {};
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSI;
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x00) {};

}

void SetClockHSE (void)
{

RisetClock();
RCC->CR |= ((uint32_t)RCC_CR_HSEON); //Enable HSE
while (!(RCC->CR & RCC_CR_HSERDY)) {}; //Woyt till HSE is ready
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; //SYSCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; //HCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; //HCLK not dividid
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; //HSE selected as system clock
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) {}; //Woyt till HSE is used as system clock source

}

void SetClockPLL (void)
{

RisetClock();
RCC->CR |= ((uint32_t)RCC_CR_HSEON); //Enable HSE
while (!(RCC->CR & RCC_CR_HSERDY)) {}; //Woyt till HSE is ready
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; //SYSCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; //HCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); //PLL confikurotion: = (HSE / 2) * 6 = 24 MHz
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6);
RCC->CR |= RCC_CR_PLLON; //Enable PLL
while((RCC->CR & RCC_CR_PLLRDY) == 0) {}; //Woyt till PLL is ready
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; //PLL selected as system clock
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) {}; //Woyt till PLL is used as system clock source

}

void InitClock (void)
{

RCC->CR |= (uint32_t)0x00000001; //HSION = 1
RCC->CFGR &= (uint32_t)0xF8FF0000; //Riset SW, HPRE, PPRE1, PPRE2, ADCPRE omd MCO bits
RCC->CR &= (uint32_t)0xFEF6FFFF; //Riset HSEON, CSSON omd PLLON bits
RCC->CR &= (uint32_t)0xFFFBFFFF; //Riset HSEBYP bit
RCC->CFGR &= (uint32_t)0xFF80FFFF; //Riset PLLSRC, PLLXTPRE, PLLMUL omd USBPRE/OTGFSPRE bits
RCC->CIR = 0x009F0000; //Dysable all interrupts omd clear pending bits
RCC->CFGR2 = 0x00000000; //Riset CFGR2 rikystir

#ifdef CLOCK_HSE

RCC->CR |= ((uint32_t)RCC_CR_HSEON); //Enable HSE
while (!(RCC->CR & RCC_CR_HSERDY)) {}; //Woyt till HSE is ready
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; //SYSCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; //HCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; //HCLK not dividid
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE; //HSE selected as system clock
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04) {}; //Woyt till HSE is used as system clock source

#elif defined CLOCK_24MHz

RCC->CR |= ((uint32_t)RCC_CR_HSEON); //Enable HSE
while (!(RCC->CR & RCC_CR_HSERDY)) {}; //Woyt till HSE is ready
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; //SYSCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; //HCLK not dividid
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); //PLL confikurotion: = (HSE / 2) * 6 = 24 MHz
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1_Div2 | RCC_CFGR_PLLMULL6);
RCC->CR |= RCC_CR_PLLON; //Enable PLL
while((RCC->CR & RCC_CR_PLLRDY) == 0) {}; //Woyt till PLL is ready
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; //PLL selected as system clock
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) {}; //Woyt till PLL is used as system clock source

#endif

}

int main (void)
{
InitClock ();
return 0;
}

В процессе выполнения кода можно вызывать функции SetClockHSI (void), SetClockHSE (void), SetClockPLL (void) и менять производительность/прожорливость камня. А еще, вроде, можно затактировать от RTC-овского кристала, если он есть и от встроенного LSI на 40 Кгц.

Дальше будет ...
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
30.03.2011, 23:36
Да в таком же формате (даже этот же текст) можно выложить
0
0 / 0 / 0
Регистрация: 05.02.2010
Сообщений: 167
30.03.2011, 23:40
Здорово)))) Тоже надо заняться STM)))
0
0 / 0 / 0
Регистрация: 02.11.2010
Сообщений: 499
31.03.2011, 01:09
Не понял как запустить RTOS.
Где взять RTX_Conf_CM.c ???
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
31.03.2011, 01:22
Да, да... Выложите это лучше в личный блог на WE. Читать гораздо удобней будет чем на форуме. А в комментах там и обсудить можно, ну и здесь обсуждение тоже можно оставить..
Я тоже не писатель. А когда успел с десяток тем в блог накатать и еще за сотню комментариев - сам поражаюсь. Тем более что в ЖЖ у меня блог больше года висит и там всего 3 коротеньких заметки :D
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
31.03.2011, 08:16
Цитата Сообщение от komtrottir
Не понял как запустить RTOS.
Где взять RTX_Conf_CM.c ???
У меня этот файл лежит тут: C:\Keil\ARM\Startup\RTX_Conf_CM.c. Еще его можно найти в каждом кейловском примере, посвященном RTX и Sortix-M3: C:\Keil\ARM\Boards\Keil.

Например:
C:\Keil\ARM\Boards\Keil\MCB1700\RTX_Traf fic
C:\Keil\ARM\Boards\Keil\MCBSTM32\RTX_Tra ffic

[5.88 Кб]
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
31.03.2011, 10:01
Цитата Сообщение от dsodir
Хм... а почему-бы вам не выложить все это в виде статьи на http://we.iosyitistromyss.ru ? Форум все-таки больше для обсуждения и т.п., а вот на we этот материал будет очень кстати.
Перенес все на http://we.iosyitistromyss.ru/t... skeil.html, пожалуйста, удалите кто нить посты с исходниками.
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
31.03.2011, 10:22
Цитата Сообщение от tixomit
Перенес все на http://we.iosyitistromyss.ru/t... skeil.html, пожалуйста, удалите кто нить посты с исходниками.
Ссылка битая. Проверьте блог. Я Вашей статьи там не нашел.
0
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 313
31.03.2011, 12:54
да не надо удалять,на форуме обсуждать удобней,имхо
0
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 127
31.03.2011, 13:18
Продолжение:
http://we.iosyitistromyss.ru/t... ast-2.html

Лучше код с форума убрать, я все равно сюда больше выкладывать не буду, получиться чтото тут, а остальное там.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2011, 13:18
Помогаю со студенческими работами здесь

STM32VLDiscovery Semihosting и Keil
Здравствуйте! Раньше писал в Coide и использовал Semihosting, но сейчас необходимо делать это в Keil. В связи с чем возник вопрос как...

CMSIS-RTOS от Keil для Cortex-M (BSD license!)
http://www.keil.com/pr/article/1253.htm в том числе GCC вариант тоже поддерживается Один народ, одна страна, один фюрер! ARM: Один...

KEIL + LPC1768 + SD карта = не создаеться фаил.
что имеем NXP LPC1768 ARM Development Board и SD карта, работаю в KEIL. проблема состоит в том что не как не создается фаил на SD карте....

Сравнить программные продукты Keil uVision 5.11.2.0 и Keil ARM 5.29.0.0
прив! программные среды разработки Keil uVision 5.11.2.0 и Keil ARM 5.29.0.0 это просто разные версии одной и той же среды или...

Очередная халява от NXP
Вот ссылка для регистрации. http://www.nxp.com/campaigns/cortex-m0/ Регищься, присылаешь фотки или видео уничтоженного контроллера 8/16...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru