Например TDA7294

Форум РадиоКот • Просмотр темы - Про Keil uVision 5
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пн июл 14, 2025 01:50:31

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 208 ]    , , , , 5, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср июл 16, 2014 15:49:27 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Почему не так?
*(uint16_t ) (LCD_REG) = reg;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср июл 16, 2014 16:13:55 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Потому что тогда (uint16_t)(LCD_REG) превратит значение адреса в двухбайтное целое число. Во-первых, адрес может быть числом как меньше 2 байт, так и больше, и в последнем случае мы его обрежем приведя к двухбайтному целому типу. Во-вторых, в Си нельзя разадресовать просто число, только какой-нибудь указатель. Такой вот уж стандарт языка, нету там простой конструкции "записать по адресу N", приходится по несколько раз приводить типы один к другому.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср июл 16, 2014 16:18:21 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
baghear, может так :

*(__IO uint16_t *) (LCD_REG) = reg;

__IO он же volatile.

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср июл 16, 2014 18:05:59 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Ну все, совсем человека запутали. Он и так с указателями на вы, а тут еще какой-то __IO и volatile.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср июл 16, 2014 19:43:39 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Спасибо, приму как должное


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Чт июл 17, 2014 00:28:25 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Что такое volatile в курсе, а вот что такое __IO?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Чт июл 17, 2014 07:54:20 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Какое-нибудь макроопределение или typedef. Обычно производители вот так делают:
Код:
typedef volatile uint8_t*  __IO8;
typedef volatile uint16_t* __IO16;
typedef volatile uint32_t* __IO32;


Тогда объявления регистров будут такими:
Код:
#define REG_CON (*_IO16 (0xFFFFBBB0))
#define REG_STS (*_IO32 (0xFFFFBBB2))
#define REG_DBG (*_IO16 (0xFFFFBBB6))


Пользоваться как обычными переменными:
Код:
...
if (REG_STS == 0x25)
{
    REG_CON |= 0xFA1;
}
...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Чт июл 17, 2014 11:01:47 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Спасибо!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пт июл 18, 2014 01:15:06 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Добрый день, что означает такая запись ?
#define assert_param(expr) ((void)0)
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пт июл 18, 2014 08:24:09 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
На самом деле ничего. Любой assert_param в коде независимо от его параметра заменяется на конструкцию ((void)0), которая ничего не делает и игнорируется компилятором. Вообще, assert - это такая штука, которая валит программу с сообщением об ошибке, если переданный ей параметр равен нулю, или false. При отладке это может помочь найти всякие ошибки, вроде неправильного использования функции. Например:
Код:
void Foo(int a)
{
    // Программа аварийно завершиться, если мы передадим функции
    // значение меньше ста или больше тысячи.
    assert(a < 100);
    assert(a > 1000);

    ...
}


Когда программа отлажена и готова для выпуска, то все ассерты хорошо бы удалить, чтобы они не потребляли зря ресурсов. Шерстить все функции на их наличие не удобно, да и не всегда возможно, поэтому в файле, где объявлен assert (какой-нибудь assert.h), вводят конструкцию наподобие указанной тобой, чтобы все вызовы assert заменились препроцессором на нечто незначащее и были выкинуты компилятором. Вот так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пт июл 18, 2014 17:23:15 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Спасибо, а (void) 0 - приведение нуля к типу?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пт июл 18, 2014 17:46:18 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Да, если просто написать ноль, то компилятор возможно выдаст предупреждение о неиспользуемом значении, приведя его к void можно избежать этого. Лично я бы не стал использовать такую, несколько непривычную конструкцию для того, чтобы игнорировать вызов assert. По мне намного логичней выглядит такая запись:
Код:
#define assert(expr)

то есть, "пустое" макроопределение. В этом случае препроцессор не будет заменять его на незначащую конструкцию, а просто выкинет и все. Хотя, это дело вкуса.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пт июл 18, 2014 18:19:45 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Большое спасибо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Вт авг 26, 2014 18:31:31 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср фев 29, 2012 01:58:32
Сообщений: 672
Откуда: Харьков, Украина
Рейтинг сообщения: 0
Народ,подскажите пожалуйста.
Разбираюсь с lwIP стеком. Скачал пример с сайта st. В дереве проекта напротив двух файлов 3 вертикальных красных квадратика. Что это такое? Не разу не сталкивался. Это влияет на процесс компиляции?


Вложения:
keil.jpg [140.69 KiB]
Скачиваний: 512
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Ср авг 27, 2014 08:21:04 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Это значит что настройки компиляции для этих файлов изменены и при компиляции будут задействованы именно они а не общие для проекта.
Клик правой кнопкой по этим файлам в менеджере проекта -> Options for file 'xxx' и смотри изменения ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Вс сен 07, 2014 16:22:16 
Родился

Зарегистрирован: Пт дек 14, 2012 21:07:49
Сообщений: 12
Откуда: Екатеринбург
Рейтинг сообщения: 0
Разбираюся с примером 3 отсюда http://radiokot.ru/articles/43/ плата влдешная, кейл5 выдает такую ошибку source\STM32_init\STM32_Init.c(31): error: #5: cannot open source input file "stm32f10x_lib.h": No such file or directory
#include "stm32f10x_lib.h" // STM32F10x Library Definitions
Скачивал новые библиотеки https://translate.googleusercontent.com ... pNpmO5EEiQ заменял файлы из примера на них, всеравно выдает тоже самое, в 3, 4, и 5 примерах.
Куда копать :( подскажите пожалуйста.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Вс сен 07, 2014 17:33:50 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
пробуйте #include "stm32f10x.h"
#include "stm32f10x_lib.h" похоже было в старых библиотеках (V2.x).
Лучше разбирать примеры от производителя (имхо).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пн сен 08, 2014 04:50:26 
Родился

Зарегистрирован: Пт дек 14, 2012 21:07:49
Сообщений: 12
Откуда: Екатеринбург
Рейтинг сообщения: 0
Переподключил в файле INIT.c
Начал компилить исходник.Но выдает 39 варнингов source\STM32_init\STM32_Reg.h(38): warning: #47-D: incompatible redefinition of macro "PWR_CR_DBP" (declared at line 1517 of ".\source\config\stm32f10x.h") такого плана. :( Может ктонибуть тыкнуть в рвбочие примеры. Заводские примеры stm32vldiscovery_package уже скачал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Пн сен 08, 2014 07:05:05 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
В библиотеке STM32F10x standard peripheral library полно примеров, практически для всех "внутренностей" микроконтроллеров этой линейки:
STM32F10x StdPeriph_Lib Examples
The package contains the following examples:
ADC - BKP - CAN - CEC - CortexM3 - CRC - DAC - DMA - EXTI - FLASH - FSMC - GPIO - I2C - I2S - IWDG - Lib_DEBUG - NVIC - PWR - RCC - RTC - SDIO - SPI - SysTick - TIM - USART - WWDG
Так же есть готовые шаблоны для проектов IAR, Keil, Atolic TrueSTUDIO


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Про Keil uVision 5
СообщениеДобавлено: Чт окт 30, 2014 19:26:39 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Добрый день, подскажите почему программа не заходит в прерывание?
Спойлер#include "stm32f10x.h" // Device header
#include "stm32f10x_gpio.h" // Keil::Device:StdPeriph Drivers:GPIO
#include "stm32f10x_rcc.h" // Keil::Device:StdPeriph Drivers:RCC

int main(void)
{
RCC_HSICmd(ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , ENABLE);

TIM4->PSC = 8000;
TIM4->ARR = 1000;
TIM4->DIER |= TIM_DIER_UIE;

NVIC_EnableIRQ (TIM4_IRQn);

TIM4->CR1 |= TIM_CR1_CEN;
__enable_irq ();

while(1)
{

}
}

void TIM4_IRQnHandler(void)
{
TIM4->SR &= ~TIM_SR_UIF;
}

Есть ли в keil флаг глобального разрешения прерываний, где его посмотреть?
Хотелось бы понять выполняется ли команда __enable_irq ();


Последний раз редактировалось baghear Чт окт 30, 2014 20:57:27, всего редактировалось 2 раз(а).

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 208 ]    , , , , 5, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y