nimaltd / gsm_v5

gsm module library for STM32 LL
GNU General Public License v3.0
232 stars 86 forks source link
at at-command at-commands atcommand atcommands bluetooth gsm gsmlib library peripheral sim800 sim800c sim800library sim800stm32 stm32f1 usart

gsm module library for STM32 LL

int main() { gsm_init(); gsm_power(true); gsm_waitForRegister(30); gsm_msg_send("+98xxxxxxx", "TEST MSG 1"); while (1) { gsm_loop(); }
}

--------------------------------------------------------------------------------
## RTOS example:
* file atcConfig.h

define _ATC_DEBUG 0 // use printf debug

define _ATC_RTOS 1 // 0: no rtos 1: cmsis_os v1 2: cmsis_os v2

define _ATC_RXSIZE 1024 // at-command rx buffer size

define _ATC_SEARCH_CMD_MAX 5 // maximum of answer in at-command

define _ATC_SEARCH_MAX 10 // maximum of always search in buffer

define _ATC_RXTIMEOUT_MS 50 // rx timeout to get new packet

* file main.c   

include "gsm.h"

int main() { ...
}

void task_gsm(void const * argument) {

if (_GSM_MAIN_POWER == 1)

HAL_GPIO_WritePin(_GSM_PWR_CTRL_GPIO, _GSM_PWR_CTRL_PIN, GPIO_PIN_RESET);
gsm_delay(1000);

endif

gsm_init(); gsm_power(true);

if(_GSM_SIM_DETECTOR == 1)

if(HAL_GPIO_ReadPin(_GSM_SIM_DET_GPIO, _GSM_SIM_DET_PIN))
{
  gsm_power(false);
  #if(_GSM_RTOS != 0)
    vTaskSuspend(NULL);
  #endif
}

endif

while (1) { gsm_loop(); } }

void task_other(void const * argument) { //gsm_waitForRegister(30); gsm_msg_send("+98xxxxxxx", "TEST MSG 1"); while (1) {
osDelay(10000); } }

if(_GSM_SIM_DETECTOR == 1)

void gsm_callback_simDetectorISR() { gsm.status.simDetCangeInterruptFlag = 1;

if(_GSM_RTOS != 0)

xTaskResumeFromISR(task_gsm);

endif

}

endif