nrf 52832-freertos 루틴

nrf 52832 의 최신 sdk(nRF5SDK_12.1.0)freertos 의 예 를 제시 했다.운영 체 제 를 사용 하면 복잡 한 시스템 을 개발 할 수 있 고 개발 의 난이 도 를 낮 출 수 있다.
메모:이 버 전 sdk 는 s132 에 맞 춰 야 합 니 다.nrf52_3.0.0 의 softdevice 사용
1.이 demo 를 이용 하여 테스트 를 하고 자체 rtt 디 버 깅 정보 기능 을 열 었 습 니 다.그리고 자신의 task 를 새로 만 들 었 습 니 다.프로그램 이 실행 되 지 않 는 것 을 발견 한 다음 에 freertos 설정 파일 인 FreeRTOSConfig.h 를 보면 다음 과 같은 매크로 정 의 를 발견 할 수 있 습 니 다.
#define configTOTAL_HEAP_SIZE                                                     ( 4096 )

4k 의 램 공간 을 분 배 했 기 때문에 이 매개 변 수 를 확대 하여 프로그램 이 실행 되 지 않 는 문 제 를 해결 했다.이 부분 은 freertos 에 속 하 는 것 이 므 로 알 고 싶다 면 freertos 의 운영 체 제 를 알 아야 한다.
2.테스트 과정 에서 프로그램 이 일정 시간 실행 되 지 않 으 면 실행 이 중단 된다 는 것 을 알 게 되 었 습 니 다.자신의 task 를 최고 우선 순위 로 설정 하 더 라 도 효과 가 똑 같 습 니 다.그래서 예전 에 freertos 가 없 는 hrs 루틴 으로 제한 방송 모드 를 사 용 했 습 니 다.즉,방송 일정 시간 후에 방송 이 중단 되 었 지만 freertos 에서 ble 의 물건 은 task 에 넣 었 습 니 다.따라서 이 task 가 걸 려 도 다른 task'의 운행 에 영향 을 주지 않 습 니 다.그러나 코드 를 통 해 사실은 그렇지 않 습 니 다.방송 정지 사건 이 발생 한 후에 다음 과 같은 함 수 를 호출 했 기 때 문 입 니 다.
static void sleep_mode_enter(void)
{
    uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);

	NRF_LOG_INFO("sleep\r
"); return; APP_ERROR_CHECK(err_code); // Prepare wakeup buttons. err_code = bsp_btn_ble_sleep_mode_prepare(); APP_ERROR_CHECK(err_code); // Go to system-off mode (this function will not return; wakeup will cause a reset). err_code = sd_power_system_off(); APP_ERROR_CHECK(err_code); }

"이 함 수 는 task 를 걸 지 않 고 Puts the chip in System OFF mode 입 니 다.reset 을 통 해서 만 다시 실행 할 수 있 기 때문에 이것 이 freertos 시스템 이 오래 실행 되 지 못 하 는 이유 입 니 다."

좋은 웹페이지 즐겨찾기