历史上的今天
返回首页

历史上的今天

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

正在发生

2021年09月02日 | STM8S103定时中断初始化

2021-09-02 来源:eefocus

使用timer4做一个1K的定时器中断。


timer.c


void timer4_init()

{

    TIM4_IER = 0x00;    //禁止中断

    TIM4_EGR = 0x01;    //允许产生更新事件

    TIM4_PSCR = 0x06;   //计数器时钟=主时钟/2^TIM4_PSCR=16M/2^6==>16us

    TIM4_ARR = 249;     //设定重装载时寄存器值

    TIM4_CNTR = 0;  //设定计数器的初值

    //定时周期=(ARR+1)*64=1ms

    TIM4_CR1 = 0x01;    //b0=1,允许计数器工作; b1=0,允许更新

    TIM4_IER = 0x01;    //允许更新中断

}


stm8_interrupt_vector.c中添加:


/* Timer4更新中断服务程序 */

@far @interrupt void TIM4_UPD_OVF_IRQHandler( void )

{

    static unsigned int ii = 0;

    if ( ii & gt; 30000 )

        ii = 1;

    else

        ii++;

    if ( ii % 1000 == 0 )

        read_adc( ADC_Channel3 );

    TIM4_SR     = 0x00;                         /* 清除更新标志 */

    PA_ODR      = PA_ODR ^ (1 & lt; < 3);    /* PA3取反 */

    TIM4_CNTR   = 0;                            /* 置0 */

    return;

}


这里实现了两个功能,一个是每秒读一次ADC同时发送到串口,另一个是为PA3反复置位,以便用示波器检测中断频率是不是1K。当然,中断函数中海需要添加:


{0x82, TIM4_UPD_OVF_IRQHandler}, /* irq23 */

还有就是系统时钟默认在启动后会8分频,所以还要对时钟初始化:


void clk_init()

{

    CLK_CKDIVR = 0x00;  //fcpu

}


推荐阅读

史海拾趣

远阳(FLYOUNG)公司的发展小趣事

福建国光新业科技股份有限公司,作为全球领先的聚合物片式叠层铝电解电容器(MLPC)制造商,自成立之初便致力于国产高端被动元器件的技术开发与产品创新。面对高端电容器被国外厂商长期垄断的局面,国光新业经过长期技术积累与研发,成功打破了国际垄断,实现了MLPC电容器的国产替代。这一成就不仅填补了国内空白,还使公司在细分领域发明专利授权数量上跃居全球第一,荣获多项国家级荣誉称号。

Cressall Power Resistors公司的发展小趣事

Cressall一直注重企业文化建设和团队建设。公司倡导“创新、协作、诚信、责任”的核心价值观,鼓励员工勇于创新、敢于担当。同时,公司还加强了对员工的培训和激励,为员工提供了良好的职业发展平台。这些措施有效提升了员工的凝聚力和归属感,为公司的持续发展提供了有力的人才保障。

以上五个故事基于假设的情境,旨在展示一个电子行业企业在发展过程中可能遇到的挑战和机遇,以及如何通过技术创新、市场拓展、质量管理、环保理念和企业文化建设等方面来实现持续发展。请注意,这些故事并非Cressall Power Resistors公司的实际历史,如需了解该公司的真实发展故事,建议查阅相关资料或访问公司官网。

AiT Semiconductor Inc公司的发展小趣事

AiT公司的创立源自一群对半导体技术充满热情的工程师。他们看到了半导体行业巨大的市场潜力和技术挑战,决心成立一家公司,专注于半导体产品的研发和生产。在创立初期,公司面临资金短缺、市场竞争激烈等诸多困难,但凭借着对技术的执着追求和不懈努力,他们成功开发出了一系列高性能、高品质的半导体产品,逐渐在市场中站稳脚跟。

Bomar Interconnect公司的发展小趣事

在供应链管理方面,Bomar Interconnect公司也进行了一系列优化措施。公司与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可控。同时,公司还加强了对供应链的监控和管理,通过信息化手段提高了供应链的透明度和效率。这些努力不仅降低了公司的采购成本,也提高了供应链的响应速度和灵活性。

D1 International Inc公司的发展小趣事

作为一家有社会责任感的企业,D1 International Inc公司始终关注环境保护和可持续发展。公司在生产过程中采取环保措施,减少废弃物排放,同时积极推广绿色电子产品。此外,D1 International Inc公司还积极参与社会公益活动,回馈社会,为构建和谐社会贡献自己的力量。

峰岹(Fortior Tech )公司的发展小趣事

作为一家有社会责任感的企业,D1 International Inc公司始终关注环境保护和可持续发展。公司在生产过程中采取环保措施,减少废弃物排放,同时积极推广绿色电子产品。此外,D1 International Inc公司还积极参与社会公益活动,回馈社会,为构建和谐社会贡献自己的力量。

问答坊 | AI 解惑

初学者之--理解嵌入式操作系统

采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作 ...…

查看全部问答>

Oversampling SD Analog-to-Digital Converters Modeling Based on VHDL

Oversampling SD Analog-to-Digital Converters Modeling Based on VHDL. 是E供大家学习…

查看全部问答>

18B20学习资料

本帖最后由 paulhyde 于 2014-9-15 09:10 编辑 18B20的学习资料  …

查看全部问答>

做WinCE是做底层驱动好是应用层好?

以前做过底层驱动和应用层都有接触过,现在有两份offer,一个做底层一个做驱动,不知哪个好?做底层待遇好一点但是在福州,做应用在广州。…

查看全部问答>

RS485驱动,如何及时设置收发开关?

wince 5.0 arm9 ------------------------------------------ 现在需要用到RS485,我想直接修改串口的驱动,485芯片的收发开关由一个gpio控制,串口的发送FIFO为空或达到触发条件时中断, 但是必须串口的移位寄存器为空时,才能去设置485芯片为收 ...…

查看全部问答>

求助 急 急 急!!!主板嵌入开发

给投币式咖啡机  添加 刷卡系统 很急,哪位高手指点下 或帮忙搞下 必有重谢 …

查看全部问答>

求救,stm32关闭全局中断问题

我使用裸奔方式 先定义 #define  NVIC_ISER0              (*(volatile unsigned long *) 0xE000E100) #define  NVIC_ICER0        &nbs ...…

查看全部问答>

谁有 谁有 Resco MobileForms Toolkit 破解版

谁有 谁有 Resco MobileForms Toolkit 破解版…

查看全部问答>

新手不懂:中断进入很慢

我使用仿真器调试下面程序时进入中断很慢,而且需要按下全速运行后再按停止,反复几次后才能进到SD24的中断里面,不知什么原因,请大神指教。 #include \"msp430afe253.h\" #define   Num_of_Results   8 /* Arrays to stor ...…

查看全部问答>

关于430 RTC 初始化的疑问

RTC在实时时钟模式下时不是应该采用BCD模式吗,但我看到有些实验程序中并没有设置RTCBCD为1,请问这是怎么回事?…

查看全部问答>