|
|
  |
Библиотеки для STM32 |
|
|
|
Mar 14 2017, 16:32
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
Оооо! Я тоже на таком же велосипеде езжу! Этажом ниже ATMega, ATXMega (кроме USB), Renesas RZ/A1L, AT91SAM9S, ATSAM3/4S, STM32Fxxxx Код // +++ dsp // Интерфейс к НЧ кодеку void hardware_audiocodec_enable(void); // Интерфейс к НЧ кодеку void hardware_audiocodec_initialize(void); // Интерфейс к НЧ кодеку
// Интерфейс к ПЧ кодеку или FPGA void hardware_fpgacodec_enable(void); // Интерфейс к ВЧ кодеку void hardware_fpgacodec_initialize(void); // Интерфейс к ВЧ кодеку void hardware_fpgaspectrum_enable(void); // Интерфейс к источнику данных о спектре void hardware_fpgaspectrum_initialize(void); // Интерфейс к источнику данных о спектре
void hardware_dac_initialize(void); /* инициализация DAC на STM32F4xx */ void hardware_dac_ch1_setvalue(uint_fast16_t v); // вывод 12-битного значения на ЦАП - канал 1 void hardware_dac_ch2_setvalue(uint_fast16_t v); // вывод 12-битного значения на ЦАП - канал 2
void hardware_spi_io_delay(void);
void cat2_parsechar(uint_fast8_t c); /* вызывается из обработчика прерываний */ void cat2_rxoverflow(void); /* вызывается из обработчика прерываний */ void cat2_disconnect(void); /* вызывается из обработчика прерываний произошёл разрыв связи при работе по USB CDC */ void cat2_sendchar(void * ctx); /* вызывается из обработчика прерываний */
// Функции тестирования работы компорта по прерываниям void cat3_parsechar(uint_fast8_t c); /* вызывается из обработчика прерываний */ void cat3_rxoverflow(void); /* вызывается из обработчика прерываний */ void cat3_disconnect(void); /* вызывается из обработчика прерываний */ void cat3_sendchar(void * ctx); /* вызывается из обработчика прерываний */
void modem_parsechar(uint_fast8_t c); /* вызывается из обработчика прерываний */ void modem_rxoverflow(void); /* вызывается из обработчика прерываний */ void modem_disconnect(void); /* вызывается из обработчика прерываний */ void modem_sendchar(void * ctx); /* вызывается из обработчика прерываний */
void nmea_parsechar(uint_fast8_t c); /* вызывается из обработчика прерываний */ void nmea_rxoverflow(void); /* вызывается из обработчика прерываний */ void nmea_sendchar(void * ctx); /* вызывается из обработчика прерываний */
void hardware_uart1_initialize(void); void hardware_uart1_set_speed(uint_fast32_t baudrate); void hardware_uart1_tx(void * ctx, uint_fast8_t c); /* передача символа после прерывания о готовности передатчика */ void hardware_uart1_enabletx(uint_fast8_t state); /* вызывается из обработчика прерываний */ void hardware_uart1_enablerx(uint_fast8_t state); /* вызывается из обработчика прерываний */ uint_fast8_t hardware_usart1_putchar(uint_fast8_t c);/* передача символа если готов порт */ uint_fast8_t hardware_usart1_getchar(char * cp); /* приём символа, если готов порт */
void hardware_uart2_initialize(void); void hardware_uart2_set_speed(uint_fast32_t baudrate); void hardware_uart2_tx(void * ctx, uint_fast8_t c); /* передача символа после прерывания о готовности передатчика */ void hardware_uart2_enabletx(uint_fast8_t state); /* вызывается из обработчика прерываний */ void hardware_uart2_enablerx(uint_fast8_t state); /* вызывается из обработчика прерываний */ uint_fast8_t hardware_usart2_putchar(uint_fast8_t c);/* передача символа если готов порт */ uint_fast8_t hardware_usart2_getchar(char * cp); /* приём символа, если готов порт */
void usbd_cdc_tx(void * ctx, uint_fast8_t c); /* передача символа после прерывания о готовности передатчика - вызывается из HARDWARE_CDC_ONTXCHAR */ void usbd_cdc_enabletx(uint_fast8_t state); /* вызывается из обработчика прерываний */ void usbd_cdc_enablerx(uint_fast8_t state); /* вызывается из обработчика прерываний */
/* отладочная выдача через USB CDC */ void debugusb_initialize(void); /* Вызывается из user-mode программы при запрещённых прерываниях. */ uint_fast8_t debugusb_putchar(uint_fast8_t c);/* передача символа если готов порт */ uint_fast8_t debugusb_getchar(char * cp); /* приём символа, если готов порт */ void debugusb_parsechar(uint_fast8_t c); /* вызывается из обработчика прерываний */ void debugusb_sendchar(void * ctx); /* вызывается из обработчика прерываний */ И далее в том же духе: Код uint_fast8_t board_getadc_filtered_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper); /* получить значение от АЦП в диапазоне lower..upper (включая границы) */ uint_fast16_t board_getadc_filtered_u16(uint_fast8_t i, uint_fast16_t lower, uint_fast16_t upper); /* получить значение от АЦП в диапазоне lower..upper (включая границы) */ uint_fast8_t board_getadc_smoothed_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper); /* при изменении отфильтрованного значения этого АЦП возвращаемое значение на каждом вызове приближается к нему на 1 */ uint_fast8_t board_getadc_unfiltered_u8(uint_fast8_t i, uint_fast8_t lower, uint_fast8_t upper); /* получить значение от АЦП в диапазоне lower..upper (включая границы) */ uint_fast16_t board_getadc_unfiltered_u16(uint_fast8_t i, uint_fast16_t lower, uint_fast16_t upper); /* получить значение от АЦП в диапазоне lower..upper (включая границы) */ uint_fast32_t board_getadc_unfiltered_u32(uint_fast8_t i, uint_fast32_t lower, uint_fast32_t upper); /* получить значение от АЦП в диапазоне 0..255 */ adcvalholder_t board_getadc_filtered_truevalue(uint_fast8_t i); /* получить значение от АЦП */ adcvalholder_t board_getadc_unfiltered_truevalue(uint_fast8_t i); /* получить значение от АЦП */ adcvalholder_t board_getadc_fsval(void); /* получить максимальное значение значение от АЦП */ void hardware_set_adc_filter(uint_fast8_t i, uint_fast8_t v); /* установить способ фильтрации данных (в момент выборки их регистра АЦП */
void hardware_set_adc_filterLPF(uint_fast8_t i, uint_fast8_t k); /* Установить способ фильтрации LPF и частоту среза - параметр 1.0..0.0, умноженное на HARDWARE_ADCFILTER_LPF_DENOM */ #define HARDWARE_ADCFILTER_LPF_DENOM 128 /* положение фиксированной точки при фильтрации HARDWARE_ADCFILTER_LPF */
Сообщение отредактировал Genadi Zawidowski - Mar 14 2017, 22:40
|
|
|
|
|
Mar 28 2017, 00:43
|
Знающий
   
Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177

|
QUOTE (ViKo @ Mar 27 2017, 07:11)  Поделитесь примером с комментариями на английском, который не стыдно показать. Не знаю, какой в этом смысл, но вот - хватанул с экрана что было в окне редактора...  CODE for (;;) // Task, that caused error, will loop here forever { #ifndef DEBUG if (!(SysFlags & SYSF_OSStarted)) VdHitWd(wd); #endif
UpdLEDs (); t2 = _SET_TIMEOUT(100); // 100 ms delay while (!(_CHK_TIMEOUT(t2))) {}
if (_CHK_TIMEOUT(t)) // Check if timeout expired { SysFlags |= SYSF_ResetReq; // Set restart request flag t = _SET_TIMEOUT(3000); // Allow 3 sec for graceful termination of other tasks while (!(_CHK_TIMEOUT(t))) {} GSMPower(0); // Turn modem off if (GenCnf.dat.DSLflags & DSMF_Enable) { Slv_SleepCmd (SLAVE_ADDR, 3600, 0x01, &err); t = _SET_TIMEOUT(3000); // Delay 3 sec while (!(_CHK_TIMEOUT(t))) {} // (actually, power will be shut down during this delay) // If we pass here, something went really wrong. Reboot anyway. reboot(); // Reset unit, if wasn't done already by other task } else reboot(); // Reset unit, if wasn't done already by other task } }
}
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
Mar 28 2017, 10:14
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(Эдди @ Mar 28 2017, 08:00)  Например, зачем комментировать очевидное — паузы? У меня такие комментарии частенько бывают. По двум причинам. 1. Частенько лень писать спец. макрос и число в коде не явно описывает реальное время задержки. 2. Как выше в примере - число реальное, а единицы измерений неизвестно какие (мкс, мс, сек ??) А через год нужно подкрутить код - и ищи концы по проекту. А так - комментарий присутствует
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|