9052|5

291

帖子

5

TA的资源

纯净的硅(中级)

楼主
 

【CY8CKIT-149 PSoC 4100S测评】+定时器/计数器的使用 [复制链接]

继续研究官方自带的例程,这次是用的TCPWM_P4_periodic_Interrupt01这个例子,例程的打开方式请参考之前PWM帖子中关于PWM例程打开的步骤。

只从TCPWM_P4_periodic_Interrupt01这个名字也看不出来具体作用,分析之后原来是定时器/计数器配合中断来实现LED的周期性亮灭。

先来看一下电路原理,中间的Timer定时器很显眼,左边是时钟电路,右边是中断以及LED电路。
右上角的LED_Green2是我添加的。


双击Timer,原来是我们之前用的PWM模块,只是这次选用Timer/Counter功能它就成了定时器了。
想想也对的,之前用的stm32的定时器本身也是可以产生PWM的。


看一下定时器的配置,Period原本是999,我改成500了,而时钟频率是1kHz.
1kHz什么概念?就是1秒1000次,配合计数器的500,就是500ms完成一次计数,给中断发一个信号。


对了,还要进行引脚配置,如图,新添加的LED2配置为5.2口,板子上就在5.5的旁边。


来看一下主函数:


  1. int main()
  2. {   
  3.     /* Enable global interrupt */
  4.     CyGlobalIntEnable;

  5.     /* Set up and enable a TCPWM interrupt handler. */
  6.     Isr_Timer_StartEx(InterruptHandler);

  7.     /* Start the TCPWM Component */
  8.     Timer_Start();

  9.     for(;;)
  10.     {
  11.         /* Do nothing */
  12.     }
  13. }
复制代码


很简洁,各种初始化后进入无限循环,没什么说的。

再来看一下中断函数:

  1. _Bool n=0;
  2. CY_ISR(InterruptHandler)
  3. {
  4.     /* Clear the TCPWM terminal count interrupt */
  5.     Timer_ClearInterrupt(Timer_INTR_MASK_TC);

  6.     /* Toggle the green LED state */
  7.     LED_Green_Write(~LED_Green_Read());

  8.     n=!n;
  9.     if(n==1)
  10.         LED_Green2_Write(~LED_Green2_Read());
  11. }
复制代码


我添加了一个bool变量 n,进入中断后取反一下,如果n为1,则翻转一下LED2的状态。
也就是进入两次中断后翻转一下LED2的状态。

上面分析了根据时钟频率以及定时器的计数值,500ms进入一次中断,那么我添加的LED2就是1000ms,
即1秒翻转一次亮灭状态。

而程序原有的LED是进入中断一次就翻转,即0.5秒翻转一次亮灭状态。

下载程序运行,满足分析的效果,没有录视频,拍了两个照片,如下:



此帖出自单片机论坛

最新回复

学习,谢谢分享。   详情 回复 发表于 2021-12-30 10:36
点赞 关注
 

回复
举报

1903

帖子

0

TA的资源

版主

沙发
 
板子看着不错
此帖出自单片机论坛
 
 

回复

1903

帖子

0

TA的资源

版主

板凳
 
其他不发表意见
此帖出自单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

4
 
板子哪里买的?
此帖出自单片机论坛

点评

论坛提供的,测评板块  详情 回复 发表于 2018-12-8 19:11
 
 
 

回复

291

帖子

5

TA的资源

纯净的硅(中级)

5
 
wwd7928 发表于 2018-12-8 09:48
板子哪里买的?

论坛提供的,测评板块
此帖出自单片机论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 

学习,谢谢分享。

此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 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
快速回复 返回顶部 返回列表