22.04.2015, 20:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от STM32F0
|
В хедеры от СТМ!
|
ТАК ЭТО И ЕСТЬ НЕНАВИДИМЫЙ ТОБОЙ SPL!!!!!!!!!!!!!!
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
22.04.2015, 20:12
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Вот -почитай рекомендации ARM:
Цитата:
|
Peripheral Access
Describes naming conventions, requirements, and optional features for accessing peripherals. More...
Each peripheral provides a data type definition with a name that is composed of a prefix ‹device abbreviation›_ and the ‹peripheral name›_, for example LPC_UART for the device LPC and the peripheral UART. The intention is to avoid name collisions caused by short names. If more peripherals exist of the same type, identifiers have a postfix consisting of a digit or letter, for example LPC_UART0, LPC_UART1.
The data type definition uses the standard C data types from the ANSI C header file ‹stdint.h›. IO Type Qualifiers are used to specify the access to peripheral variables. IO Type Qualifiers are indented to be used for automatic generation of debug information of peripheral registers and are defined as shown below:
Код:
|
#define __I volatile const
#define __O volatile
#define __IO volatile |
The following typedef is an example for a UART. ‹device abbreviation›_UART_TypeDef: defines the generic register layout for all UART channels in a device.
Код:
|
typedef struct
{
union {
__I uint8_t RBR; /* Offset: 0x000 (R/ ) Receiver Buffer Register */
__O uint8_t THR; /* Offset: 0x000 ( /W) Transmit Holding Register */
__IO uint8_t DLL; /* Offset: 0x000 (R/W) Divisor Latch LSB */
uint32_t RESERVED0;
};
union {
__IO uint8_t DLM; /* Offset: 0x004 (R/W) Divisor Latch MSB */
__IO uint32_t IER; /* Offset: 0x004 (R/W) Interrupt Enable Register */
};
union {
__I uint32_t IIR; /* Offset: 0x008 (R/ ) Interrupt ID Register */
__O uint8_t FCR; /* Offset: 0x008 ( /W) FIFO Control Register */
};
__IO uint8_t LCR; /* Offset: 0x00C (R/W) Line Control Register */
uint8_t RESERVED1[7];
__I uint8_t LSR; /* Offset: 0x014 (R/ ) Line Status Register */
uint8_t RESERVED2[7];
__IO uint8_t SCR; /* Offset: 0x01C (R/W) Scratch Pad Register */
uint8_t RESERVED3[3];
__IO uint32_t ACR; /* Offset: 0x020 (R/W) Autobaud Control Register */
__IO uint8_t ICR; /* Offset: 0x024 (R/W) IrDA Control Register */
uint8_t RESERVED4[3];
__IO uint8_t FDR; /* Offset: 0x028 (R/W) Fractional Divider Register */
uint8_t RESERVED5[7];
__IO uint8_t TER; /* Offset: 0x030 (R/W) Transmit Enable Register */
uint8_t RESERVED6[39];
__I uint8_t FIFOLVL; /* Offset: 0x058 (R/ ) FIFO Level Register */
} LPC_UART_TypeDef; |
To access the registers of the UART defined above, pointers to a register structure are defined. In this example ‹device abbreviation›_UART# are two pointers to UARTs defined with above register structure.
Код:
|
#define LPC_UART2 ((LPC_UART_TypeDef *) LPC_UART2_BASE )
#define LPC_UART3 ((LPC_UART_TypeDef *) LPC_UART3_BASE ) |
The registers in the various UARTs can now be referred in the user code as shown below:
Код:
|
LPC_UART1-›DR // is the data register of UART1. |
Minimal Requirements
To access the peripheral registers and related function in a device, the files device.h and core_cm#.h define as a minimum:
The Register Layout Typedef for each peripheral that defines all register names. RESERVED is used to introduce space into the structure for adjusting the addresses of the peripheral registers.
Example:
Код:
|
typedef struct
{
__IO uint32_t CTRL; /* Offset: 0x000 (R/W) SysTick Control and Status Register */
__IO uint32_t LOAD; /* Offset: 0x004 (R/W) SysTick Reload Value Register */
__IO uint32_t VAL; /* Offset: 0x008 (R/W) SysTick Current Value Register */
__I uint32_t CALIB; /* Offset: 0x00C (R/ ) SysTick Calibration Register */
} SysTick_Type; |
Base Address for each peripheral (in case of multiple peripherals that use the same register layout typedef multiple base addresses are defined).
Example:
Код:
|
#define SysTick_BASE (SCS_BASE + 0x0010) /* SysTick Base Address */ |
Access Definitions for each peripheral. In case of multiple peripherals that are using the same register layout typdef, multiple access definitions exist
Код:
|
(LPC_UART0, LPC_UART2). |
Example:
Код:
|
#define SysTick ((SysTick_Type *) Systick_BASE) /* SysTick access definition */ |
These definitions allow accessing peripheral registers with simple assignments.
Example:
|
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 22.04.2015 в 20:16.
|
|
|
|
22.04.2015, 20:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от dosikus
|
А у тебя просто фобия
|
Я просто взглянул на SPL для STM8, испугался и удалил это говно.
И заголовочные файлы там — говно! Все через задницу!
Камни у STM более-менее, но софт.. Такое впечатление, что им там все библиотеки пишут пара десятков китайцев/индусов за миску риса в сутки!!!
И насрать мне на эти дебильные рекомендации! Ладно бы, у меня gcc мог код делать: он умеет оптимизировать всю эту чепуху со структурами, а вот sdcc оптимизировать так круто не умеет! И в итоге все эти долбаные структуры превратятся не в "регистр=значение", а в разыменование 100500 указателей! И 2-3 операции магическим образом превратятся в 100!!!
И да, каким раком рекомендации ARM к STM8???
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
22.04.2015, 20:13
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от eddy
|
ТАК ЭТО И ЕСТЬ НЕНАВИДИМЫЙ ТОБОЙ SPL!!!!!!!!!!!!!!
|
eddy, не будь так туп, почитай мои последние посты ...
__________________
Осторожно , злой кот
|
|
|
|
22.04.2015, 20:17
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от eddy
|
ТАК ЭТО И ЕСТЬ НЕНАВИДИМЫЙ ТОБОЙ SPL!!!!!!!!!!!!!!
|
- Мужчина, вы пьяны!
- А у вас, ик, ноги кривые!
|
|
|
|
22.04.2015, 20:17
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от eddy
|
И да, каким раком рекомендации ARM к STM8???
|
Ты по диагонали читаешь?
Рекомендации ARM для описания периферии.
Повторю еще раз - для особо понятливых :
Что плохого в том, что производитель описывает периферию в одинаковом стиле?
При том что и периферия - близнецы.
Вывод - рекомендовано ARM , не говнокод.
А у тебя точно фобия и зашоренность...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 22.04.2015 в 20:20.
|
|
|
|
22.04.2015, 20:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
dosikus, еще раз: каким боком ARM к STM8?
У STM32 дофигища флеша, там запросто можно написать структура-›поле.битовое_поле = значение, и хай оно займет 8..16 32-битных операций — насрать! А у STM8 флеша мало, там так распоясываться нельзя!
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
22.04.2015, 20:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Вот же флуд раздули на пустом месте ☺
И, что интересно, темы вообще никаким боком не касающийся! Как обычно...
Кому не нравится мой код — пишите свой. Я ничего никому не навязываю.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
22.04.2015, 20:20
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от eddy
|
а вот sdcc оптимизировать так круто не умеет! И в итоге все эти долбаные структуры превратятся не в "регистр=значение", а в разыменование 100500 указателей! И 2-3 операции магическим образом превратятся в 100!!!
|
Фтопку такое гуано, вместе с пингуинами!
|
|
|
|
22.04.2015, 20:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: 1- wire STM8 из вольтметров
Сообщение от STM32F0
|
Фтопку такое гуано
|
Фтопку тебя, дядя!
А из свободных компиляторов только sdcc умеет STM8. И то, совсем недавно поддержка появилась.
Анально огороженные рабы пусть и дальше воруют всякие космики-яры...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:11.
|
|