Keil uVision
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Keil uVision
Ок. Я про такой и не знал. Держите плюсик.
- Реклама
Re: Keil uVision
Не пойму чем вам так нравится IDE на основе eclipse? Они же тормозят!arkhnchul писал(а):Тот же допиленный из коробки eclipse плюс gcc.
Re: Keil uVision
они привычны, очень фичасты, настраиваемы. Тормоза - вещь субъективная и таки зависящая от компа. Разве что стартует долго, но у меня от этого есть средство -
Код: Выделить всё
arkhnchul@arkhost-scow:~$ uptime
23:18:10 up 24 days, 1:15, 0 users, load average: 0,39, 0,54, 0,62Re: Keil uVision
Есть IDE на основе Code::Block. Не тормозят.
Re: Keil uVision
ну да, есть они, кто ж спорит-то 
- Реклама
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Keil uVision
В IAR есть так называемые preinclude files, что по мне очень удобно. В Кейле как-то можно подобное организовать? У меня пока не получилось. Спасибо.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Keil uVision
По мне, так совершенно вредная опция. Чем меньше код зависит от настроек IDE, тем лучше. Нужно подключить файл - надо писать #include и не мучать опу.
Re: Keil uVision
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3516633#p3516633"]В IAR есть так называемые preinclude files, что по мне очень удобно. В Кейле как-то можно подобное организовать? У меня пока не получилось. Спасибо.[/uquote]
Удобно что? Х***я подобная визардо_тыкалкам?
Таки есть в кайло подобное г.
Удобно что? Х***я подобная визардо_тыкалкам?
Таки есть в кайло подобное г.
Re: Keil uVision
А какие удобства сия фича создает и какие проблемы решает? Вообще не пойму, куда ее можно с пользой применять.
Re: Keil uVision
Привет народ. Не стал читать тему. Вопрос в лоб. Изучаю и практикую STM32. Освоил I2C, UART. С железом вообще никаких проблем нет.
А вот лед блинк никак не поддается...
В общем, ухожу из main в свою функцию MyMain(), в ней инкрементирую глобальную переменную, по совпадению включаю светодиод. Переменная объявлена перед main как uint8_t temp = 0. В MyMain глобальная переменная temp объявлена как extern uint8_t temp. Почему temp всегда равна 0?
else{
посоветуйте нормальную IDE вместо КАЛЛ
}
А вот лед блинк никак не поддается...
В общем, ухожу из main в свою функцию MyMain(), в ней инкрементирую глобальную переменную, по совпадению включаю светодиод. Переменная объявлена перед main как uint8_t temp = 0. В MyMain глобальная переменная temp объявлена как extern uint8_t temp. Почему temp всегда равна 0?
else{
посоветуйте нормальную IDE вместо КАЛЛ
}
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Keil uVision
Для начала
А IDE вторична.
Спойлер

Re: Keil uVision
http://purebasic.mybb.ru/viewtopic.php?id=575Сухарь писал(а):посоветуйте нормальную IDE
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: Keil uVision
[uquote="VladislavS",url="/forum/viewtopic.php?p=3552673#p3552673"]Для начала
А IDE вторична.[/uquote]
Что с тобой случилось что ты начал ANSI C рекомендовать к прочтению? Почему не С++?
Мурик, кончай уже советовать хрень, KEIL лучшая.
Спойлер

Что с тобой случилось что ты начал ANSI C рекомендовать к прочтению? Почему не С++?
Мурик, кончай уже советовать хрень, KEIL лучшая.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Keil uVision
[uquote="Oxford",url="/forum/viewtopic.php?p=3552695#p3552695"]Что с тобой случилось что ты начал ANSI C рекомендовать к прочтению? Почему не С++?[/uquote]Степ бай степ. Сначала таблица умножения, потом тригонометрия, затем высшая математика. Какой ему С++, если в двух переменных разобраться не может.
Re: Keil uVision
Чего началось то? Раньше с AVR и cvavr никаких проблем не было,обьявил перед main -ом переменную и она автоматом стала глобальной и доступной в обработчиках прерываний и всех остальных функциях ,а в кале какието траблы,типа extern-ов. Читал Вами указанную книжку,об этом там ни слова, и что теперь в каждой функции, напоминать компилятору о существовании глобальной переменной externom чтоли? "грамматическая ошибка на уровне 4 класса" какой-то
Re: Keil uVision
Чудак который не способен связать две переменные называет огромный и мощный продукт калом... Не умеешь, не берись.
Код не привёл? Гадать? Для начала объяви переменные ещё и волатильными.
Код не привёл? Гадать? Для начала объяви переменные ещё и волатильными.
Глупый не задает вопросы. Глупый и так все знает.
Re: Keil uVision
Денег стоит и не малых.Oxford писал(а):KEIL лучшая.
Переход на M0 не вариант. Проще IDE сменить на бесплатную.
В других исходниках тоже доступна? Видимо в cvavr не используется раздельная компиляция, когда каждой файл компилируется в отдельности и о коде других файлов, компилятор ничего не знает.Сухарь писал(а):обьявил перед main -ом переменную и она автоматом стала глобальной и доступной в обработчиках прерываний и всех остальных функциях
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: Keil uVision
Тебе какая разница платная не платная ты все равно ничего не продаешь. На торрентах лекарство есть.
M0/L0 там бесплатно и до 32кб на все.
M0/L0 там бесплатно и до 32кб на все.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Keil uVision
[uquote="Сухарь",url="/forum/viewtopic.php?p=3552794#p3552794"]Чего началось то? Раньше с AVR и cvavr никаких проблем не было,обьявил перед main -ом переменную и она автоматом стала глобальной и доступной в обработчиках прерываний и всех остальных функциях ,а в кале какието траблы,типа extern-ов.[/uquote]Ключевое слово тут ПРЕРЫВАНИЙ. И ответ вовсе не extern, а volatile.
[uquote="Сухарь",url="/forum/viewtopic.php?p=3552794#p3552794"]Читал Вами указанную книжку,об этом там ни слова, и что теперь в каждой функции, напоминать компилятору о существовании глобальной переменной externom чтоли? "грамматическая ошибка на уровне 4 класса" какой-то[/uquote]Да что же ты врёшь? Раздел 10.1
[uquote="Сухарь",url="/forum/viewtopic.php?p=3552794#p3552794"]Читал Вами указанную книжку,об этом там ни слова, и что теперь в каждой функции, напоминать компилятору о существовании глобальной переменной externom чтоли? "грамматическая ошибка на уровне 4 класса" какой-то[/uquote]Да что же ты врёшь? Раздел 10.1
Сухарь, проблема твоя яйца выеденного не стоит, но ты её даже сформулировать правильно не можешь. Это от полного непонимания как работает компилятор, а тем более оптимизирующий компилятор. Выкладывай код и ещё до восхода солнца тебе ошибку найдут (ткнут носом).В некоторых случаях объявление extern можно опустить. Если определение внешней переменной в исходном файле расположено выше функции, где она используется, то в объявлении extern нет необходимости.
Re: Keil uVision
Чудные дела... Вчера это не работало и Keil ругался на не объявленную переменную. Сегодня все собралось, прошилось и работает, видимо перезагрузка помогла...
#include "stm32f1xx_hal.h"
uint16_t temp = 0;
#include "MyMain.c"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void MyMain(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while(1){
MyMain();
}
}
void SystemClock_Config(void){
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Configure the Systick interrupt time
*/
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
/**Configure the Systick
*/
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void){
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
/*Configure GPIO pin : PC13 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
void _Error_Handler(char *file, int line){
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
while(1)
{
}
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
}
#endif
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
temp++;
HAL_Delay(1);
if(temp >= 1000){
temp = 0;
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,SET);
}
}
ни extern, ни volatile не понадобились...
Да не ругайтесь вы, парни. Перешел на новый для себя камень и прежде, чем писать что - то серьезное - люблю проверить и попробовать все с самых азов. И предложенные книжки еще лет 8 назад читал, ничего не понятно было, вот и не помню ничо...
Спойлер
#include "main.h"#include "stm32f1xx_hal.h"
uint16_t temp = 0;
#include "MyMain.c"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void MyMain(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while(1){
MyMain();
}
}
void SystemClock_Config(void){
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Configure the Systick interrupt time
*/
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
/**Configure the Systick
*/
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void){
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
/*Configure GPIO pin : PC13 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
void _Error_Handler(char *file, int line){
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
while(1)
{
}
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
}
#endif
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Спойлер
void MyMain(void){temp++;
HAL_Delay(1);
if(temp >= 1000){
temp = 0;
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,SET);
}
}
Да не ругайтесь вы, парни. Перешел на новый для себя камень и прежде, чем писать что - то серьезное - люблю проверить и попробовать все с самых азов. И предложенные книжки еще лет 8 назад читал, ничего не понятно было, вот и не помню ничо...



