3084|4

565

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【BLE 5.3无线MCU CH582】3、非阻塞方式点灯 [复制链接]

 

系列文章:

【BLE 5.3无线MCU CH582】1、初识CH582开发板(开箱)

【BLE 5.3无线MCU CH582】2、MounRiver IDE初体验

 

1、前言

阻塞方式点灯,即就是死等,在等待期间mcu干不了其他事情(中断除外),这种方式不太友好,本文使用非阻塞方式点灯。

 

2、硬件连接

 开发板上板载了两个LED灯,本文分别将两个灯连接到PB18和PB19上面。

 

3、思路

利用定时器中断,每1ms中断一次,整个系统维护一个tick计数;

记录某一时刻的tick,用A表示,再获取当前的tick,用B表示,如果当前的B-A大于等于500(这里500ms闪烁一次),那么就执行一次led翻转,同时也更新A的值。

 

4、软件实现

(1)利用定时器中断,每1ms中断一次,整个系统维护一个tick计数

static uint32_t Systick=0;

void TimerConfig(void)
{
  TMR0_TimerInit( FREQ_SYS / 1000 );                // 设置定时时间 1ms
  TMR0_ITCfg( ENABLE, TMR0_3_IT_CYC_END );          // 开启中断
  PFIC_EnableIRQ( TMR0_IRQn );
}

uint32_t SystemGetTick(void)
{
  return Systick;
}

__INTERRUPT
__HIGH_CODE
void TMR0_IRQHandler( void )        // TMR0 定时中断
{
  if ( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) )
  {
    TMR0_ClearITFlag( TMR0_3_IT_CYC_END );      // 清除中断标志
    Systick++;
  }
}

(2)LED翻转

void LedInit(void)
{
    GPIOB_SetBits( GPIO_Pin_18|GPIO_Pin_19 );
    GPIOB_ModeCfg( GPIO_Pin_18|GPIO_Pin_19, GPIO_ModeOut_PP_5mA );
}

void SystemRun(void)
{
    static uint32_t tick=0;

    if(SystemGetTick()-tick>500)
    {
        tick=SystemGetTick();

        GPIOB_InverseBits(GPIO_Pin_18|GPIO_Pin_19);
    }
}

 

(3)主函数轮询

int main()
{
  SetSysClock( CLK_SOURCE_PLL_60MHz );
  TimerConfig();
  LedInit();

  while( 1 )
  {
      SystemRun();
  }
}

5、现象

 

 

 

 

 

 

最新回复

直接上TMOS呀,蓝牙有TMOS的,新建一个任务事件就行了。   详情 回复 发表于 2022-3-11 11:49
点赞(1) 关注(2)
个人签名stm32/LoRa物联网:304350312
 
 

回复
举报

1025

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

不错,这就是系统“扫描”的意义,很多误差要求不高的控制、告警、甚至通讯,都可以采用这种方式,这样就采用了一个公共时钟,完成了很多不同时间的“定时任务”。节省了中断资源。也很好的协调了个“任务”之间的关系。

点评

是的哦,整个系统维护一个tick即可。  详情 回复 发表于 2022-3-9 13:52
个人签名چوآن شـين
 
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
Gen_X 发表于 2022-3-9 10:39 不错,这就是系统“扫描”的意义,很多误差要求不高的控制、告警、甚至通讯,都可以采用这种方式 ...

是的哦,整个系统维护一个tick即可。

个人签名stm32/LoRa物联网:304350312
 
 
 

回复

6841

帖子

11

TA的资源

版主

4
 

直接上TMOS呀,蓝牙有TMOS的,新建一个任务事件就行了。

点评

那个的确可以  详情 回复 发表于 2022-3-14 08:56
 
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

5
 
lugl4313820 发表于 2022-3-11 11:49 直接上TMOS呀,蓝牙有TMOS的,新建一个任务事件就行了。

那个的确可以

个人签名stm32/LoRa物联网:304350312
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
短信幽默

某人一心埋头在电脑中,其母推门进来递过一杯水,他茫然地看看水杯,若有所思地问:妈妈,你是拷贝过来的,还是移动过来的? 

PCB工艺流程

PCB工艺流程

实用电子秤(C)(山东省电子设计大赛)

摘 要 本系统采用单片机AT89S52为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交 ...

【DIY新作】LED点阵时钟.3种字体.4种动画.自动旋屏.GPS校时【附原理图】

半年来一直在DIY辉光管、荧光管的时钟,其实算来,我最早DIY的时钟是LED点阵的。 时隔3年,再次汇集这段时间以来的想法,重新DI ...

FPGA经典100问之<仿真 20问>.pdf

FPGA经典100问之<仿真 20问>.pdf

【国产FPGA高云GW1N-4系列开发板测评】FLASH操作

本帖最后由 怀揣少年梦 于 2021-12-28 14:12 编辑 一、目的 使用高云GW1N-4系列开发板来擦除、页写FLASH,FLASH使用的型号 ...

求推荐PGA280的替代芯片?

公司采购说PGA280价格飞涨还买不上,求大家推荐一款无需改电路的替代型号? 具体型号是:PGA280AIPW

ADI如何查看数据手册资料分享

ADI如何查看数据手册资料分享

【2024 DigiKey创意大赛】家居气象台-备料

围绕项目需求购置了以下必要的附料,在此和大家进行一一分享。 第1个,NUCLEO-F411RE开发板的usb接口没有与时俱进采用type C ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表