栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

rt-thread 学习(二)外部中断 添加头文件 延时函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rt-thread 学习(二)外部中断 添加头文件 延时函数

rt-thread 学习(二)外部中断 添加头文件 延时函数
  • 设置按键外部中断
  • 开启硬件定时器
    • 初始化配置部分
  • 延时函数
  • 添加头文件

设置按键外部中断
#include 
#include 
#include "board.h"
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include 
#define B1_PIN_NUM            GET_PIN(B,1)

void B1_IRQ_CB(void *args)
{
    rt_kprintf("enter B1_IRQ_CB!rn");

    rt_pin_write(B1_PIN_NUM, PIN_HIGH);
}
static void pin_beep_sample(void)
{
    
    rt_pin_mode(B1_PIN_NUM, PIN_MODE_INPUT_PULLUP);
    
    rt_pin_attach_irq(B1_PIN_NUM, PIN_IRQ_MODE_FALLING, B1_IRQ_CB, RT_NULL);
    
    rt_pin_irq_enable(B1_PIN_NUM, PIN_IRQ_ENABLE);
    
   // rt_pin_detach_irq(B1_PIN_NUM);
}
int main(void)
{
    pin_beep_sample();
    return RT_EOK;
}

开启硬件定时器 初始化配置部分

#define BSP_USING_TIM
#ifdef BSP_USING_TIM
#define BSP_USING_TIM3

void HAL_TIM_base_MspInit(TIM_HandleTypeDef* htim_base)
{

  if(htim_base->Instance==TIM3)
  {
  

  
    
    __HAL_RCC_TIM3_CLK_ENABLE();
  

  
  }

}

硬件定时器设备的具体使用方式可以参考如下示例代码,示例代码的主要步骤如下:

首先根据定时器设备名称 “timer3” 查找设备获取设备句柄。

以读写方式打开设备 “timer3” 。

设置定时器超时回调函数。

设置定时器模式为周期性定时器,并设置超时时间为 5 秒,此时定时器启动。

延时 3500ms 后读取定时器时间,读取到的值会以秒和微秒的形式显示。

#include 

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include 
#include 

#define HWTIMER_DEV_NAME   "timer3"     


static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size)
{
    rt_kprintf("this is hwtimer timeout callback fucntion!n");
    rt_kprintf("tick is :%d !n", rt_tick_get());

    return 0;
}

static int hwtimer_sample(void)
{
    rt_err_t ret = RT_EOK;
    rt_hwtimerval_t timeout_s; 
    rt_device_t hw_dev = RT_NULL; 
    rt_hwtimer_mode_t mode; 

    mode = HWTIMER_MODE_PERIOD;
    timeout_s.sec = 5; 
    timeout_s.usec = 0; 
    
    
    
    
    

    hw_dev = rt_device_find(HWTIMER_DEV_NAME);
    ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR);
    rt_device_set_rx_indicate(hw_dev, timeout_cb);
    ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode);
    rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s));

        return ret;
    }
    
    MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample);

 int main(void) {
    hwtimer_sample();
    return RT_EOK;
}

内部,外部都是这样

然后把 字符全删了就正常了

延时函数

rt_thread_delay延时的单位是系统节拍,如果每秒系统节拍数这个配置不是1000,延时数值的单位就不是毫秒,
rt_thread_mdelay可以直接使用,单位就是毫秒,无需考虑转换

添加头文件
右键工程,属性-------c/c++常规-----路径与符号-------添加,就可以把头文件路径添加到工程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号