历史上的今天
返回首页

历史上的今天

今天是:2024年09月15日(星期日)

2021年09月15日 | STM8S003F3 使用定时器来计算方波周期的方法

2021-09-15 来源:eefocus

我们的需求是stm8做从机,然后使用一根线接收方波,来实现不同的功能,比如亮红灯,亮黄灯,打开蜂鸣器等等等等。


那么问题来了,之前我尝试着通过一次发送多少个方波来实现不同的功能,但是到最后我发现这个方法行不通。后来我想了一下可以通过主机发过来的方波频率来实现不同的功能,即知道每次发过来的方波的周期。


那么如何计算方波周期呢?这里感谢我的同事给了我思路,可以实现这个功能。


首先是要做gpio的外部中断,这里以gpio PD4在主函数里进行设置,当有下降沿的时候就会进入中断处理函数:


GPIO_Init(GPIOD,GPIO_PIN_4, GPIO_MODE_IN_FL_IT );//接收方波初始化

EXTI_DeInit();

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD , EXTI_SENSITIVITY_FALL_ONLY);

定时器timer2在主函数的配置如下:


//内部时钟为16M,因此这个设置时以10ms进入一次中断

TIM2_DeInit();  

TIM2_TimeBaseInit(TIM2_PRESCALER_16, 9999);       

TIM2_PrescalerConfig(TIM2_PRESCALER_16, TIM2_PSCRELOADMODE_UPDATE);  

TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);  

TIM2_SetCounter(0x0000);  

TIM2_Cmd(ENABLE);  

TIM2_ClearFlag(TIM2_FLAG_UPDATE);

 

TIM2_ITConfig( TIM2_IT_UPDATE, ENABLE);

TIM2_Cmd(ENABLE); 

在gpio的外部中断函数里,这样设置:


INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)

{

  /* In order to detect unexpected events during development,

     it is recommended to set a breakpoint on the following instruction.

  */

  //GPIO_WriteReverse(GPIOD,GPIO_PIN_3);  

  flag ^= 0x01;

  if(flag == 0)

  test_time = 0;

  else{

tmp_count = test_time;

  }

}

在timer2的外部中断处理函数里,这样设置:


 INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)

 {

  /* In order to detect unexpected events during development,

     it is recommended to set a breakpoint on the following instruction.

  */

     

     TIM2_ClearFlag( TIM2_FLAG_UPDATE);//记得要清除标志位,否则会出问题

test_time++;

   

 }

这样一来当flag为0的时候就会清零,为1的时候就会将数据传出去,也就是等于知道一个周期的时间。


存在问题:这样的写法虽然可以解决问题,但是在程序刚开始的时候还是会出现问题,因为可能定时器先走了,主函数比定时器慢,一开始可能会丢,不过后面就很稳定了。

推荐阅读

史海拾趣

高创科技(gotrend)公司的发展小趣事

聚辰(Giantec)公司电子行业发展的五个故事

故事一:技术传承与独立运营

聚辰半导体股份有限公司(Giantec Semiconductor Corporation)的故事始于2009年,由美国ISSI公司与其高管共同出资成立。这家公司继承了ISSI在EEPROM和智能卡芯片技术上的专利和研发团队,为后续的快速发展奠定了坚实基础。随着ISSI公司股权的变动,聚辰半导体逐渐由国资企业接手并开始独立运营。这一转变不仅让聚辰获得了更大的自主权,也为其在存储芯片领域的深耕细作提供了有力支持。

故事二:全球布局与市场拓展

自成立以来,聚辰半导体便致力于全球化布局,不仅在上海设立总部,还在美国硅谷、韩国、中国香港、中国台湾、深圳、南京、苏州等地设立了子公司、办事处或销售机构。这一战略布局使得聚辰能够更好地服务全球客户,迅速响应市场需求。同时,聚辰的产品线不断扩展,从最初的EEPROM存储芯片,逐步延伸到NOR Flash、音圈马达驱动芯片和智能卡芯片等多个领域,广泛应用于智能手机、汽车电子、工业控制等多个行业。

故事三:技术突破与产品创新

在技术创新方面,聚辰半导体始终走在行业前列。2012年,聚辰推出的EEPROM存储芯片成功进入三星、OPPO等手机品牌的摄像头模组供应链,标志着公司在全球EEPROM存储芯片市场的地位逐渐稳固。此后,聚辰不断推出新产品,如音圈马达驱动芯片与EEPROM二合一产品,进一步提升了其在手机摄像头模组中的竞争力。同时,聚辰还积极布局汽车电子市场,多款车规级存储芯片获得市场认可,为公司带来了新的增长点。

故事四:资本市场助力与品牌提升

2019年,聚辰半导体在上海证券交易所科创板成功上市,为公司的发展注入了强劲动力。资本市场的助力不仅让聚辰获得了更多的资金支持,还显著提升了公司的品牌影响力和市场认知度。上市以来,聚辰持续加大研发投入,优化产品结构,提升产品性能,进一步巩固了其在存储芯片领域的市场地位。

故事五:荣誉加身与行业认可

近年来,聚辰半导体凭借其出色的业绩和技术实力赢得了多项荣誉和行业认可。公司多次入选中国物联网企业百强榜单、上海硬核科技企业TOP100榜单等权威榜单,彰显了其在行业内的领先地位。同时,聚辰还积极履行社会责任,参与公益事业,如向中国科学技术大学捐赠资金用于支持人工智能创新中心建设等,进一步提升了公司的社会形象和品牌价值。这些荣誉和认可不仅是对聚辰过去努力的肯定,也是对其未来发展的期待和鼓舞。

General Diode Corp公司的发展小趣事
检查冷却系统是否正常运行,清理散热片上的灰尘和杂物;若冷却风扇损坏,则需更换新的风扇。
AF International公司的发展小趣事

在电子行业发展日新月异的背景下,AF International始终坚持技术创新,不断推出新产品、新技术。公司投入大量资金用于研发,引进先进的生产设备和测试仪器,确保产品质量的稳定提升。此外,AF International还积极与高校、科研机构合作,共同开展技术研发项目,推动电子行业的创新发展。正是这些技术创新成果,使得AF International在行业中始终保持领先地位。

ACEINNA公司的发展小趣事

随着公司业务规模的不断扩大,AF International意识到建立完善的质量管理体系至关重要。公司引进了先进的质量管理理念和方法,建立了严格的质量控制流程,确保从原材料采购到产品生产的每一个环节都符合质量标准。同时,AF International还加强了对员工的培训和教育,提高员工的质量意识和操作技能。这些措施使得公司的产品质量得到了有效保障,赢得了客户的广泛赞誉。

First Silicon Co., Ltd公司的发展小趣事

在电子行业快速发展的同时,环保问题也日益受到关注。First Silicon公司积极响应国家环保政策,将环保理念融入企业发展战略之中。公司投入巨资研发环保型半导体材料和生产工艺,努力减少生产过程中的污染排放和资源浪费。同时,公司还积极推广绿色电子产品,引导消费者树立环保意识。通过这一系列的环保举措,First Silicon不仅赢得了社会各界的广泛赞誉,还为其可持续发展奠定了坚实基础。

AIC [Analog Intergrations Corporation]公司的发展小趣事

人才是企业发展的核心竞争力。First Silicon公司深知这一点,因此始终将人才战略作为公司发展的重要支撑。公司建立了完善的人才培养体系和激励机制,吸引了大批优秀人才的加入。同时,公司还注重与高校和研究机构的合作,共同开展前沿技术研究和人才培养项目。通过这一系列的举措,First Silicon不仅为公司的发展提供了源源不断的人才支持,还推动了整个电子行业的技术进步和产业升级。

请注意,以上五个故事均是基于电子行业的一般情况和假设构建的,并非First Silicon Co., Ltd公司的实际历史。如需了解该公司的具体发展情况,建议直接访问其官方网站或查阅相关行业报告。

问答坊 | AI 解惑

Windows CE驱动程序开发.pdf

Windows CE驱动程序开发.pdf…

查看全部问答>

S3C2410管脚复用超级基础问题

新手提问,请勿取笑,呵呵。 S3C2410在管脚复用的时候有这样一段代码: //set GPG1 as EINT9 for CS8900A value = INREG32(&pOalPortRegs->GPGCON); OUTREG32(&pOalPortRegs->GPGCON,(value & ~(3…

查看全部问答>

有个产品使用了一段时间后无法启动了,帮分析分析

产品最初正常工作,内核和应用程序都好的。过了一段时间后启动异常。 步骤是开机Bootloader启动,启动时加载了LOGO界面填充了液晶的显示缓冲区,后来就停在这里了。 我可以按照原来的方式烧内核,更换了画面也可以显示。 重烧了BOOTLOADER后也没 ...…

查看全部问答>

在应用程序里如何查询某个USB连在哪一个USB controller上

在具有多个USB controller和多个USB设备的情况下, 如何查询这些USB设备连接在哪个USB controller上。 设备管理器中,如果选择“依连接排序设备”,就可以看到所 有设备的Device Tree,VC里有什么API或者什么方法可以获得 类似的信息吗? 请高 ...…

查看全部问答>

昨天收到开发板,今天做了第一块STM32的板子

看看有没有问题,第一次玩STM32,没有什么经验,硬件是按照st-link制作的,做了一些修改(st-link本来也是一块开发板)。准备自己做JTAG下载工具或者调试工具,呵呵,如果搞的定的话。PCB还没铺地,其他都OK了。发现一个错误,应该BOOT1接地,BO ...…

查看全部问答>

μC/OS-II实时性能测试指标

μC/OS-II实时性能测试指标   衡量嵌入式实时操作系统的好坏一般主要参考以下主要性能指标参数: 任务切换时间、中断响应时间、任务响应时间、任务创建/删除时间、交替信号量时间、取得/释放信号量时间、交替消息队列传输时间等。本文仅对前2个 ...…

查看全部问答>

51单片机实践群179146897

欢迎51单片机初学者加入…

查看全部问答>

lpc2366电源电压过高

最近调试LPC2366发现,该芯片再电源电压为3.5V时,可以下载程序但是不能正常工作;…

查看全部问答>

ispLEVER 软件问题,菜鸟求救

我写的一个程序,是Abel编写的,编译没用任何错误,怎么没用生成熔丝图文件啊。我用的是GAL16V8D…

查看全部问答>