OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9249|回复: 15

我用stm8s003f3p6定时器1定时10us进入一次中断,为什么实现不了?

[复制链接]

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
发表于 2017-7-4 19:31:12 | 显示全部楼层 |阅读模式
       我用stm8s003f3p6定时器1定时10us进入一次中断,为什么实现不了?      我进入中断翻转一次io电平,用示波器看确实20us翻转一次,这是为什么?(采用内部16m晶振)以下是定时器初始化代码

    TIM1->CR1 = 0x00;         //计数器使能,开始计数
    TIM1->IER = 0x01;         //允许更新中断
    TIM1->PSCRH = 0;
    TIM1->PSCRL = 15;          //(15+1)分频为1M
    TIM1->ARRH = 0x0;
    TIM1->ARRL = 0x0A;        //每10us中断一次
    TIM1->CR1 = 0x01;         //计数器使能,开始计数



IMG_20170704_192844.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-7
在线时间
5 小时
发表于 2017-7-7 21:11:40 | 显示全部楼层
是你不是哪里搞错了,有点不对的就是ARRL也是10-1,也就是9
回复 支持 反对

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-7-8 15:53:37 | 显示全部楼层
精度做不到这么高的频率
回复 支持 反对

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-7-8 15:55:46 | 显示全部楼层
试试定时器的PWM+外部晶振 有机会
回复 支持 反对

使用道具 举报

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
 楼主| 发表于 2017-7-12 10:02:51 | 显示全部楼层
TCS 发表于 2017-7-7 21:11
是你不是哪里搞错了,有点不对的就是ARRL也是10-1,也就是9

这个是弄错了
回复 支持 反对

使用道具 举报

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
 楼主| 发表于 2017-7-12 10:03:09 | 显示全部楼层
dozm 发表于 2017-7-8 15:53
精度做不到这么高的频率

用寄存器就好了 解决了
回复 支持 反对

使用道具 举报

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
 楼主| 发表于 2017-7-12 10:03:20 | 显示全部楼层
dozm 发表于 2017-7-8 15:55
试试定时器的PWM+外部晶振 有机会

用寄存器就好了
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-7-7
在线时间
5 小时
发表于 2017-7-13 18:45:09 | 显示全部楼层
嗯嗯,我基本是配置寄存器的,STM8S003只有8K的FLASH,寄存器能写多一点代码
回复 支持 反对

使用道具 举报

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
 楼主| 发表于 2017-7-17 14:47:40 | 显示全部楼层
TCS 发表于 2017-7-13 18:45
嗯嗯,我基本是配置寄存器的,STM8S003只有8K的FLASH,寄存器能写多一点代码

PointerAttr      库里定义的这个PointerAttr是干嘛的?
回复 支持 反对

使用道具 举报

10

主题

232

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2265
金钱
2265
注册时间
2012-8-24
在线时间
246 小时
发表于 2017-8-4 15:41:30 | 显示全部楼层
建议:stm的8位机,用寄存器,stm32,用库函数
单片机技术交流请加127034610
回复 支持 反对

使用道具 举报

159

主题

965

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
金钱
2084
注册时间
2014-3-7
在线时间
489 小时
 楼主| 发表于 2017-8-4 18:07:43 | 显示全部楼层
liushiming82 发表于 2017-8-4 15:41
建议:stm的8位机,用寄存器,stm32,用库函数

32用寄存器不是更好
回复 支持 反对

使用道具 举报

10

主题

232

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2265
金钱
2265
注册时间
2012-8-24
在线时间
246 小时
发表于 2017-8-4 21:18:18 | 显示全部楼层
因为32位的寄存器太了,查寄存器太麻烦了
单片机技术交流请加127034610
回复 支持 反对

使用道具 举报

8

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-8-1
在线时间
7 小时
发表于 2017-9-10 14:53:40 | 显示全部楼层
20us以上就能行了。mcu反应不过来。
有软件开发经验,从0硬件基础学习STM32开发。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2021-4-23
在线时间
21 小时
发表于 2021-8-26 16:37:35 | 显示全部楼层
用PWM吧
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-4-25
在线时间
14 小时
发表于 2021-9-11 15:16:43 | 显示全部楼层
20us以上就能行了。mcu反应不过来。
回复 支持 反对

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6639
金钱
6639
注册时间
2016-5-29
在线时间
907 小时
发表于 2021-9-22 14:51:49 | 显示全部楼层
本帖最后由 操作系统 于 2021-9-22 14:53 编辑

10 微秒一次中断,进入中断,保护现场,恢复现场,弹出堆栈 , 怕就要 5个微秒左右了.你再运行一两条指令,占用2  , 3 个微秒. 其它的程序不要运行了呀.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-10 02:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表