Zephyr+STM32F769 2초 주기로 깜박이는 LED 설치

4060 단어 ZephyrtimerEventSTM32
작업 환경
Ubuntu 18.04 LTS
STM32F769 Discovery Kit (以下、STM32F769)
Zephyr 2.1.0-rc1
개요
  • Kernel의 Timer 기능 사용
  • LED 샘플 블링키 프로젝트 기반
  • 참고 자료

  • Docs / Latest » API Reference » Kernel Services » Timers
  • v2.1.0-rc1의 최신 버전
  • 절차.
  • blinky 프로젝트 복사(wr blinky timer)
  • cp -rp samples/basic/blinky samples/basic/wrk_blinky_timer
  • src/main.c 뒤에 설명한 대로
  • west build -p auto -b stm32f769i_disco samples/basic/wrk_blinky_timer
  • west flash
  • 아래는main입니다.Timer의 c 를 사용합니다.
    src/main.c
    /*
     * Copyright (c) 2016 Intel Corporation
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    /*
    Nov.20, 2019 change to timer driven 
        - use timer instead of k_sleep() in while()
        - branched from [blinky] project
    */
    
    #include <zephyr.h>
    #include <device.h>
    #include <drivers/gpio.h>
    
    #define LED_PORT    DT_ALIAS_LED0_GPIOS_CONTROLLER
    #define LED     DT_ALIAS_LED0_GPIOS_PIN
    
    struct device *dev;
    
    struct k_timer my_timer;
    void my_expiry_function(struct k_timer *timer_id)
    {
        static u32_t cnt = 0;
    
        gpio_pin_write(dev, LED, cnt % 2);
        cnt++;
    }
    
    void main(void)
    {
        dev = device_get_binding(LED_PORT);
        gpio_pin_configure(dev, LED, GPIO_DIR_OUT);
    
        k_timer_init(&my_timer, my_expiry_function, NULL);
        k_timer_start(&my_timer, K_SECONDS(1), K_SECONDS(1)); // first duration=1s, interval=1s
    
        while (1) {
            //
        }
    }
    
    결실
    화면 왼쪽 아래에 있는 LED(파란색 버튼 오른쪽에 켜진 LED)는 2초 주기로 깜박입니다.

    시험을 준비하다
  • dev의 정의 방법은 좋지 않지만 타이머의 연습으로 처리
  • 좋은 웹페이지 즐겨찾기