你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1097|回复: 3

求高人给个STM8-TIM4的例程,STVD环境下的,万分感谢!

[复制链接]

8

主题

10

回帖

0

蝴蝶豆

中级会员

最后登录
2017-12-23
发表于 2016-5-6 18:51:03 | 显示全部楼层 |阅读模式
求高人给个STM8-TIM4控制LED闪烁的例程,STVD环境下的,在用TIM4得时候碰到困难,手上没有例程,百度找参考没用。。。。。。。。。
回复

使用道具 举报

2

主题

26

回帖

0

蝴蝶豆

初级会员

最后登录
2017-5-23
发表于 2016-5-7 11:35:53 | 显示全部楼层
直接操作寄存器就可以了
回复 支持 反对

使用道具 举报

8

主题

10

回帖

0

蝴蝶豆

中级会员

最后登录
2017-12-23
 楼主| 发表于 2016-5-7 15:49:38 | 显示全部楼层
嘻呵哈嘿吼 发表于 2016-5-7 11:35
直接操作寄存器就可以了

是直接操作的,结果实际测得周期是205.6mS  和程序里配置的相差很大,

====main.c==============
//时钟初始化
//=================================
void CLK_init(void)
{
        CLK_ECKR=0x00;        //关外部时钟
        CLK_ICKR=0x01; //内部时钟开启
        CLK_CMSR=0xe1; //HSI为主时钟源
  CLK_CKDIVR=0x18; //16MHZ/8分频=2MHZ
       
//        CLK_PCKENR1=0XFF;
//        CLK_PCKENR2=0XFF;
// CLK_SWR=0xe1;
       
}

void TIM4_init(void)
{       
        TIM2_EGR =0X01;                //允许更新事件
        TIM2_PSCR = 0X01;        //2MHZ/2=1MHZ   1/1MHZ=1uS
       
        TIM2_ARRH =        0X00;
        TIM2_ARRL        = 0X32; //0X32=50  50*1uS=50uS
       
        TIM2_CNTRH = 0X00;  
        TIM2_CNTRL = 0X00;        //初值
       
        TIM2_IER |= 0X01;       
        TIM2_CR1 |= 0X81;        //使能
        /*
        TIM4_CNTR        =0;                                //计数器值
        TIM4_PSCR        =0x07;                //预分频器  2MHZ/128分频  2MHZ/2^7=0.015625MHZ
        TIM4_ARR        =0XFA;                //自动重装寄存器 0XFA=250          T=1/0.015625MHZ=64uS  250*64uS=1.6mS
        TIM4_EGR        =0X01;                //计数器重新初始化并产生寄存器更新
        TIM4_IER        =0X01;                //使能中断
        TIM4_CR1        =0X81;                //使能定时器
        */
//        TIM4_CR1 |= 0X04;
//        TIM4_IER |= 0X01;
//        TIM4_PSCR        = 0X06;
//        TIM4_ARR        = 0XFA;
//        TIM4_CNTR = 0XFA;
//        TIM4_CR1 |= 0X01;
//        TIM4_EGR |= 0X01;
}

//mian file
//====================================

main()
{
        _asm("rim");                                //开启中断
        CLK_init();                                        //时钟初始化
        GPIO_init();                          //IO口初始化
        TIM4_init();                                //TIM4初始化

        while (1);
}


//中断服务程序
@far @interrupt void  TIM2(void) // TIM2_UPD_IRQHandler(void)
{
        static unsigned        int i=0;
        i++;
       
        if(i>=2000)               
        {
                i=0;
                PB_ODR^=0XFF;
        }
       
        TIM2_SR1 =0x00;//=0x0e;//清楚中断标志位
        return;
       
}

回复 支持 反对

使用道具 举报

8

主题

10

回帖

0

蝴蝶豆

中级会员

最后登录
2017-12-23
 楼主| 发表于 2016-5-7 16:29:36 | 显示全部楼层
嘻呵哈嘿吼 发表于 2016-5-7 11:35
直接操作寄存器就可以了

噢,没有错,是我示波器测错了,我测得是一个波形的周期,而实际应该是高电平的时间是100mS,这样就刚好与我程序100mS翻转对上了
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版