CubeIDE에서 FreeRTOS 배우기(2) - 메시지 대기열

저번 기사입니다.에서 신호 사건을 소개했다.
이번에 상술한 보도의 발전판으로서 나는 똑같이 임무 간 통신 기능으로서의 정보 대열을 체험하고 싶다.

정편


1. 준비


저번 보도에 따라 훈련을 실시하다.

2.해보자!


2-1. 규격.


기본적으로 모방저번이지만 변경된 부분은 취소선+굵은 글자입니다.
  • UART 중단
  • 이벤트 메시지 알림

  • 이벤트 메시지와 데이터를 받는 작업은 메아리만
  • 2-2. 이루어지다


    2-2-1. 메시지 대기열 추가


    익숙한 FREERTOS - Tasks and Quees 탭에 큐를 추가합니다.

    금형 uint8만 있으면기본값은 t로서 OK입니다.
    uint8 t형 16개를 줄 세울 수 있다는 뜻이다.

    2-2-2. 기타(기타)


    이번부터 다른 서류로 준비했어요user.c!
    사용상의 주의사항은 다음과 같다.
  • myTask02의 Code Generation은 As Weak
  • main.c 를 수동으로 수정하지 않음 (수정한 경우 취소)
  • user.c 복사 또는 다운로드
  • 2-3. 시험해 보다


    지난번과 마찬가지로 테라테임의 에코백을 확인할 수 있을 것 같다(역시 잡다함).

    3. 간단한 해설


    3-1. 정보 대기열은


    한 마디로 하면 활동과 데이터를 동시에 알리는 구조다.
    이 예에서
    "사건 = 받았어요".
    "데이터=수신 데이터 자체"
    네.
    데이터의 사이즈는 (아무것도 방법이 없으면 1 최대 32비트 (uint 32t형) 이다.
    CMSIS 사양은 다음과 같습니다.
    Message Queue
    http://www.keil.com/pack/doc/CMSIS/RTOS/html/group__CMSIS__RTOS__Message.html

    3-2. 정의 및 생성


    똑똑한 IDE는 자동으로 생성됩니다(main.c에 포함됨).
    그래서 여기서는 핸들만 사용한다.
    extern osMessageQId myQueue01Handle;
    

    3-3. 전송 및 수신


    각각 다음과 같다.
      /* Put Message */
      osMessagePut(myQueue01Handle, (uint32_t)rxData, 0);
    
        /* Get Message */
        osEvent evt = osMessageGet(myQueue01Handle, osWaitForever);
    

    끝말


    신호 사건과 마찬가지로 아주 간단하게 실현할 수 있어요!
    만약 신호 이벤트와 이 메시지 대기열이 있다면 아마도 작업 간의 통신(경험 규칙)을 망라할 수 있을 것이다.
    다음 기사에서 무엇을 할 것인지를 토론하고 있다.

    참고 자료


    CMSIS-RTOS


    Function Overview
    http://www.keil.com/pack/doc/CMSIS/RTOS/html/functionOverview.html

    컨디션

  • IDE: STM32CubeIDE
  • 평가판: STM32L4 Discovery kit IoT node - 모델 B-L475E-IOT01A
  • 메모리를 동적으로 확보해서 확장할 수 있습니다.하지만, 이곳은 매우 번거롭기 때문에 사랑을 끊는다. 

    좋은 웹페이지 즐겨찾기