Перейти к содержанию
    

csm7

Участник
  • Постов

    88
  • Зарегистрирован

  • Посещение

Весь контент csm7


  1. микроконтроллер stm32l476 void NewAlarm(void) { RTC_TimeTypeDef intervalTime; intervalTime.Seconds = 40; intervalTime.Minutes = 30; intervalTime.Hours = 11; //24h HAL_RTC_GetTime(&hrtc, &sTime, FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &sDate, FORMAT_BIN); sTime.Seconds += intervalTime.Seconds; sTime.Minutes += intervalTime.Minutes; sTime.Hours += intervalTime.Hours; } Я Вас правильно понимаю, что можно так просто добавить интервал времени и модуль RTC автоматом все учтет. (рассчитает правильное время и дату)
  2. Доброго времени суток. Такой вопрос. Необходимо к текущему времени в RTC добавить интервал времени. При этом произвести учет даты с учетом количества дней в месяце и высокосного года.
  3. Запустил прерывание, оказалось в файле stm32l1xx_it.c прописал вручную функцию void TIM3_IRQHandler(void) и прерывание заработало. Всем спасибо за обсуждение вопроса
  4. В работающем проекте созданном в stm32CubeMX настроены usart1,3 (c прерыванием), tim2 (с прерыванием по переполнению), CMSIS-RTOS (живет три потока, osMail). Понадобилось подключить TIM2, TIM6 c прерываниями - но таймеры не работают, в функцию прерывания таймеров TIM2, TIM6 контроллер не входит.Проект написан в среде Keil и установлены настройки для stm32l151vd но при этом среда видит настройки как для stm32l152rbt6 (с меньшим объемом памяти и ОЗУ в два раза ).В проекте подключен sturtup_stm32l151xd.s, system_stm32l1xx.c, stm32l1xx_hal_tim.cВ файле stm32l1xx_it.c - есть функции для прерываний usart1,3 tim2 а вот для TIM3, TIM6 нет - может в этом грабли.В чем может быть глюк?
  5. Добрый день Ранее Вы писали что пользователь может создавать свои приложения под внутреннюю ОС Open Linux в модулях SIM7600. Могли бы вы детально раскрыть эту тему (с чего начать, какой софт нужен, документация...). Так как есть интерес перенести функционал на борт модуля.
  6. Спаcибо, но так как у меня количество файлов может перевалить за несколько тысяч, то и контроллер должен быть соответствующий. Хотелось решить вопрос красиво.
  7. да я тоже уверен что никак. Дело в том что ранее применялась sim5360. Вот в ней был язык LUA и можно было скриптом решить эту задачу. А вот в sim7600 никакого встроенного скриптового языка нет. Как решать пока не известно. Может смотреть в сторону openLinux для контроллеров Qualcom на которых построено sim7600. Но мне кажется это довольно тяжеловесное решение и для такого вопроса как-то несерьезно смотрится.
  8. Подскажите пожалуйста как в модуле SIM7600E-H при помощи AT-команд создать текстовый файл с перечнем файлов находящихся в одной из папок.
  9. возможно Но проверял сервер такой есть и порт в нем такой есть и открыт
  10. Доброго времени суток! Работаю с SIM5360 пробую использовать A-GPS. Доступ к сети настроен. AT+CGPS=0,3 AT+CGPSURL="supl.google.com:7276" AT+CGPSSSL=0 AT+CGPS=1,3 модуль пытается соединиться с сервером и через какое-то время переходит в обычный режим. Модуль выдает ответ +CGPS: 0 тоже самое если запустить команду AT+CGPS=1,2 // режим MSA В чем может быть проблема?
  11. miniPCI to USB

    Уже нашел Usb Mini PCI-E module to USB 2.0 адаптер переходник SSD тема закрыта
  12. miniPCI to USB

    Доброго времени суток! Есть устройство с шиной miniPCI. Необходимо подключить это устройство к USB шине. Есть ли переходники, платы сопряжения и тп.
  13. Подобную идею реализовал но тщетно. Один байт принял, разрешил прерывание - остальные потерялись.
  14. Доброго времени суток! Использую библиотеку HAL для приема данных по USART с использованием прерываний. Данные принимаются в функции HAL_UART_RxCpltCallback. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Receive one byte in interrupt mode */ HAL_UART_Receive_IT(&huart3, rxUART3_byte, 1); if (huart->Instance == USART3) { *(pBuffer_UART3) = rxUART3_byte[0]; pBuffer_UART3++; if (strstr(Buffer_UART3, "\r\n") != 0) send_string_UART(&huart3, (uint8_t *)Buffer_UART3); } } Проблема в том, что приняв 1 байт, остальные теряются. Даже если тут же включается прием следующего байта функцией HAL_UART_Receive_IT(&huart3, rxUART3_byte, 1). Подскажите пожалуйста как можно решить такую задачу. Если длина принимаемой посылки неизвестна но известно что посылка заканчивается символом '\r\n'.
  15. Запустил, оказалось необходимо USART1_RxBuffer[0] = '\r'; но все же хотелось бы заполнять массив строкой FUNC Filling_Buffer(char *str) { uint8_t index = 0; while (*str != 0) { USART1_RxBuffer[index] = *str; str++; index++; } } define button "FillBuffer" , "Filling_Buffer(\"\r\n+CSQ: 17,0\r\n\r\nOK\r\n\")" почему-то говорит что ошибка. Не понимает указателей.
  16. Доброго времени ! При использовании дебаггера Keil uVision попробовал написать Debugger script. Попытки оказались безуспешными. define char USART1_RxBuffer[256]; define uint8_t index; FUNC void Filling_Buffer (void) { USART1_RxBuffer[0] = "\r"; USART1_RxBuffer[1] = "\n"; USART1_RxBuffer[2] = "+"; USART1_RxBuffer[3] = "C"; USART1_RxBuffer[4] = "S"; USART1_RxBuffer[5] = "Q"; USART1_RxBuffer[6] = ":"; USART1_RxBuffer[7] = " "; USART1_RxBuffer[8] = "1"; USART1_RxBuffer[9] = "7"; USART1_RxBuffer[10] = ","; USART1_RxBuffer[11] = "0"; USART1_RxBuffer[12] = "\r"; USART1_RxBuffer[13] = "\n"; USART1_RxBuffer[14] = "\r"; USART1_RxBuffer[15] = "\n"; USART1_RxBuffer[16] = "O"; USART1_RxBuffer[17] = "K"; USART1_RxBuffer[18] = "\r"; USART1_RxBuffer[19] = "\n"; } define button "FillBuffer" , "Filling_Buffer()" Скрипт не работает. В чем проблема, может скрипты вообще в среде IDE не работают.
  17. Спасибо всем за рекомендации. Сейчас разбираюсь с прерываниями для USART. Также хочу прикрутить библиотеку GSM для STM32. Какую библиотеку посоветуете ув. форумчане.
  18. Запустил Переписал код и порты заработали Похоже #include "stm32l1xx.h" #include "stm32l1xx_gpio.h" #include "stm32l1xx_rcc.h" #include "stm32l1xx_usart.h" #include "myinit.h" int main() { initPereherial(); myUsartInit(USART1, 115200); Usart1Send(USART1, 'A'); do { Usart1Send(USART1, 'S'); GPIO_SetBits(GPIOB, LD_GREEN_GPIO_PIN); Delay_ms(100); Usart1Send(USART3, 'T'); GPIO_SetBits(GPIOB, LD_BLUE_GPIO_PIN); Delay_ms(100); GPIO_ResetBits(GPIOB, LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN); Delay_ms(500); }while(1); } в файле myinit.c #include "misc.h" #include "stm32l1xx_adc.h" #include "stm32l1xx_pwr.h" #include "stm32l1xx_rcc.h" //#include "stm32l1xx_rtc.h" #include "stm32l1xx_exti.h" #include "stm32l1xx_gpio.h" #include "main.h" #include "stm32l1xx_syscfg.h" //#include "stm32l1xx_dbgmcu.h" #include "stm32l1xx_usart.h" void initPereherial(void) { GPIO_InitTypeDef GPIO_InitStructure; /* configure gpios */ /* Enable GPIOs clock */ RCC_AHBPeriphClockCmd(LD_GPIO_PORT_CLK, ENABLE); /* Configure the LED_pin as output push-pull for LD3 & LD4 usage*/ GPIO_InitStructure.GPIO_Pin = LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(LD_GPIO_PORT, &GPIO_InitStructure); /* Force a low level on LEDs*/ GPIO_LOW(LD_GPIO_PORT,LD_GREEN_GPIO_PIN); GPIO_LOW(LD_GPIO_PORT,LD_BLUE_GPIO_PIN); /* Enable USARTx Clock */ RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOAEN, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // GPIO_InitTypeDef GPIO_InitStructure; /* USART1 Rx (PA10) input */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStructure); /* USART1 Tx (PA9) output */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configuration port PA9, PA10 how alternative function for USART1 */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); /* Enable the GPIOs clocks */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); /* Enable PWR, USART3 mngt clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_USART3, ENABLE); /* USART3 Tx (PB10) output */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOC, &GPIO_InitStructure); /* USART3 Rx (PB11) input */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configuration prts PC10, PC11 how alternative function for USART3 */ GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3); } void myUsartInit(USART_TypeDef* USARTx, int BaudRate) { USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Configuration USART1 */ USART_InitStructure.USART_BaudRate = BaudRate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Take On USART1 */ USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); /* Take On USART1 */ /* Initialization USART3 */ USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); //after configuration USART configure interrupt // NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; //channel // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //priority // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//priority subgroup // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //enable channel // NVIC_Init(&NVIC_InitStructure); //initialization // USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //take on interrupt for input } void Delay_ms(uint32_t ms) { volatile uint32_t nCount; RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq (&RCC_Clocks); nCount=(RCC_Clocks.HCLK_Frequency/10000)*ms; for (; nCount!=0; nCount--); } void Usart1Send(USART_TypeDef* USARTx, uint8_t ch) { USART_SendData(USARTx, (uint8_t) ch); //Loop until the end of transmission while(USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET) {} } uint8_t Usart1Get(void) { while ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) {} return (uint8_t)USART_ReceiveData(USART1); } /*************** End My creation ****************/
  19. В мире программистов принято знаки препинания, некоторые буквы ... опускать Дабы ускорить процесс общения
  20. Код идентичен По вопросу библиотек не уверен но я туда не лазил Отлаживаю в CoIDE Оптимизацию отключил Плата stm32l-Discovery
  21. Я пробовал и в USART1 и в USART3 передавать Ничего нет на выходе точнее не могу выйти со строки while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  22. Добрый день форумчане Работаю в CoIDE Пытаюсь передать данные по USARTX Пока ничего не получается в чем проблема #include "misc.h" #include "stm32l_Init.h" #include "stm32l1xx_rcc.h" #include "stm32l1xx_gpio.h" #include "stm32l1xx_usart.h" void RCC_Configuration(){ RCC_HSICmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); RCC_MSIRangeConfig(RCC_MSIRange_6); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC, ENABLE); /* My Reset USART1, USART3 */ USART_DeInit(USART1); USART_DeInit(USART3); /* My Enable clocks USART3 PB10 -> USART3_TX, PB11 -> USART3_RX */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Enable PWR, USART3 mngt clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_USART3, ENABLE);//RCC_APB1Periph_COMP | /* Enable ADC & SYSCFG clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG , ENABLE); } void Alt_GPIO_Init(GPIO_TypeDef* GPIOx, uint32_t GPIO_Pin){ /* Initialize Leds mounted on STM32L1-DISCOVERY board */ GPIO_InitTypeDef GPIO_InitStructure; /* GPIOB Periph clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); /* Configure Port in output pushpull mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOx, &GPIO_InitStructure); } /****************----------------------------------------------------*******************/ void Alt_UsartInit(USART_TypeDef* USARTx, GPIO_TypeDef* GPIOx, uint32_t GPIO_Pins, uint32_t BaudRate) { /* Конфигурируем порты PB10 - TX, PA11- RX как альтернативную функцию для USART3 */ USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Configure USART3 Rx (PB10 PB11) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pins; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOx, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3); GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3); /* Настраиваем USARTx */ USART_InitStructure.USART_BaudRate = BaudRate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Включаем USARTx */ USART_Init(USARTx, &USART_InitStructure); /* Включаем USARTx */ USART_Cmd(USARTx, ENABLE); } #include "stm32l1xx.h" #include "stm32l1xx_rcc.h" #include "stm32l1xx_gpio.h" #include "stm32l1xx_usart.h" #include "stm32l_Init.h" /* Private define ------------------------------------------------------------*/ #define LD_GREEN_GPIO_PIN GPIO_Pin_7 #define LD_BLUE_GPIO_PIN GPIO_Pin_6 /* Private functions ---------------------------------------------------------*/ void Delay(__IO uint32_t nCount); int main(void) { RCC_Configuration(); Alt_GPIO_Init(GPIOB, LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN); Alt_UsartInit(USART3, GPIOB, GPIO_Pin_10 | GPIO_Pin_11, 9600); while(1) { GPIO_SetBits(GPIOB, LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN); Delay(10000); GPIO_ResetBits(GPIOB, LD_GREEN_GPIO_PIN | LD_BLUE_GPIO_PIN); Delay(10000); USART_SendData(USART3, 's'); while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);// } return 0; } Ожидает выход со строки while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);//
×
×
  • Создать...