Например TDA7294

Форум РадиоКот • Просмотр темы - Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 20:19:41

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


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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Чт апр 20, 2017 13:05:25 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 08, 2015 11:29:17
Сообщений: 22
Рейтинг сообщения: 0
Копаюсь в библиотеке stm8 и не могу понять как реализован SPI.

Вот эстэмщики определили структуру и новый тип данных
typedef struct SPI_struct
{
__IO uint8_t CR1; /*!< SPI control register 1 */
__IO uint8_t CR2; /*!< SPI control register 2 */
__IO uint8_t ICR; /*!< SPI interrupt control register */
__IO uint8_t SR; /*!< SPI status register */
__IO uint8_t DR; /*!< SPI data I/O register */
__IO uint8_t CRCPR; /*!< SPI CRC polynomial register */
__IO uint8_t RXCRCR; /*!< SPI Rx CRC register */
__IO uint8_t TXCRCR; /*!< SPI Tx CRC register */
}
SPI_TypeDef;

Но в коде они обращаются к элементам через вот такую штуку:
#define SPI ((SPI_TypeDef *) SPI_BaseAddress)

То есть в коде пишут например:
SPI->CR1 = SPI_CR1_RESET_VALUE;

Мой вопрос заключается в том, что я не понимаю как работает строка #define SPI ((SPI_TypeDef *) SPI_BaseAddress)
SPI_BaseAddress = адресу с которого начинаются все регистры SPI.
Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Чт апр 20, 2017 13:15:57 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
#define SPI ((SPI_TypeDef *) SPI_BaseAddress) - это подмена явного привдения типа к простой записи SPI.

SPI_BaseAddress - это просто число. чтобы рассматривать это число, как адрес, надо явно привести его к типу УКАЗАТЕЛЬ. например, (void*)123 - это указатель, равный 123. но вам надо, чтобы указатель был равен SPI_BaseAddress, да еще и не просто так, а указывал бы на определенную структуру... вот вместо абстрактного void и указывается конкретный тип вашей структуры SPI_TypeDef.

получается длинная запись, которую заменяют на короткую SPI.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Чт апр 20, 2017 14:49:26 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
Это просто структура SPI_TypeDef у которой начальный адрес равен SPI_BaseAddress. Эта структура описывает карту регистров периферии SPI, можно найти карту в мануале.
Просто упрощает запись, можете писать так
((SPI_TypeDef *) SPI1_BASE)->DR = 0xFF;
SPI1->DR = 0xFF;
Обе записи верны.

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Чт апр 20, 2017 15:15:54 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 08, 2015 11:29:17
Сообщений: 22
Рейтинг сообщения: 0
"Это просто структура SPI_TypeDef у которой начальный адрес равен SPI_BaseAddress"
Тогда получается первый элемент структуры лежит по адресу SPI_BaseAddress, второй SPI_BaseAddress+1, тритий SPI_BaseAddress+2 . Так?


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Чт апр 20, 2017 15:32:24 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Адреса полей уже будут зависеть от размеров полей и выравнивания по машинному слову. Если они = 1 байту, то да, смещение каждого будет на единицу.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Объясните пожалуйста строчку на СИ(библеотека STM8s.h)
СообщениеДобавлено: Пт апр 21, 2017 08:14:20 
Первый раз сказал Мяу!

Зарегистрирован: Вс мар 08, 2015 11:29:17
Сообщений: 22
Рейтинг сообщения: 0
Спасибо!


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

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


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

Сейчас этот форум просматривают: YaCy [Bot] и гости: 14


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

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


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