切换到宽版
下载频道
社区服务
积分商城
积分夺宝
活动聚焦
道具中心
邀请好友
会员推荐
微博关注
精华自荐
活动聚焦
领优惠券
帖子
相册
日志
群组
热榜
分享
记录
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
新站
老站
精华
领券
签到
邀请码
积分商城
帖子
用户
版块
帖子
搜索
热搜:
ADP-220AB
7600
车载收音机
石墨烯 PTC
6225
蛟龙
朗琴
sr1041
数码之家
>
我爱单片机
>
STM8学习之——中断
发帖
回复
返回列表
1
2
新帖
5338
阅读
14
回复
[STM]
STM8学习之——中断
[复制链接]
上一主题
下一主题
离线
zeze10000
UID:1463162
注册时间
2013-06-16
最后登录
2024-07-28
在线时间
782小时
发帖
2858
搜Ta的帖子
精华
2
M币
8559
专家
35
访问TA的空间
加好友
用道具
数码3段
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
发帖
2858
M币
8559
专家
35
粉丝
112
加关注
发消息
只看楼主
倒序阅读
我要置顶
楼主
发表于: 2018-06-15
STM8的中断比51的中断要强大的多。
STM8的外部引脚几乎都可以当做中断源使用。
不过同一组引脚要共用同一个中断向量,同一组引脚有多个开启了中断功能的话还需要判断是哪个脚触发。
最好是将外部中断放置在不同的端口组,便于区分。
外部中断的触发方式也比51要丰富。
有下降沿和低电平触发,说白了和低电平触发一样。
还有单独的下降沿和上升沿触发,重要的是还有一个上升沿和下降沿触发。
STM8的中断优先级也很有意思,不可改变的硬件优先级,不可屏蔽的中断。
不可屏蔽的中断有reset复位中断,来源有多个,最终都是通过拉低reset脚来实现,可以监控reset脚电平状态。
TRAP软件中断,这个不太会用,只知道汇编指令trap能触发这个中断。
TLI top level interrupt 最高级外部中断。
以上是不可屏蔽的中断,触发了就必须执行,我的理解是比最高优先级还要高。
软件优先级总共0~3级,数值越大优先级越高。
通过改变CPU状态寄存器的I0和I1位可以改变当前运行程序的软件优先级。
也就是所有运行的程序函数都有优先级,优先级放在I0,I1里。
开启中断的方法就是将main函数的优先级将为0,优先级高于0的中断就能打断main函数程序,进入中断。
在中断程序运行过程中不要轻易改变I0,I1的状态,一旦改变,程序的优先级就会随之改变,就有可能发生中断重入。
也就是在中断服务程序中不能执行关闭中断的操作。
在进入中断时,I0和I1会自动设定成中断的优先级,退出会恢复之前的优先级。
开启中断需要使用汇编指令rim。
在IAR环境中插入汇编语句的方法为asm("rim");
括号中双引号内就是要执行的汇编语句。
执行rim会将当前程序的中断优先级降到最低。
如果在中断服务程序中使用了该命令,中断服务程序的优先级将会降到最低,任意的中断都能将正在运行的中断服务程序打断,包括自己将自己打断,进入死循环。
sim指令是将当前程序软件优先级设为最高,也就是不能被中断,除非是不可屏蔽中断,比如reset。
好了,说了这么多还是进行小实验吧,有疑惑最好的解惑方法就是亲自验证一下。
大胆假设,小心求证。
这段代码试验了外部中断,TLI,TRAP中断
主要通过改变时钟分频观察LED闪烁频率判断中断的触发。
复制代码
/**中断实验************************/
/*外部中断,TLI中断,TRAP中断 */
/**********************************/
#include<iostm8s105k4.h>
#define LED PE_ODR_ODR5
void delay() //延时函数
{
int i,j;
i=32767;
j=2;
while(i--);
{
while(j--);
}
}
#pragma vector=EXTI2_vector //PD引脚中断服务函数
__interrupt void PC5_int()
{
CLK_CKDIVR=0x00; //时钟分频为0
}
#pragma vector=0x02 //TLI 外部最高中断
__interrupt void TLI()
{
CLK_CKDIVR=0x18; //时钟分频为8
}
#pragma vector=0x01 //TRAP软件中断
__interrupt void trap()
{
CLK_CKDIVR=0x06; //时钟分频为64
}
void init()
{
PE_DDR_DDR5=1; //PE5输出
PE_CR1_C15= 1; //推挽输出
PE_CR2_C25= 0; //低速率
PC_DDR_DDR1=0; //输入模式
PC_CR1_C11=1; //上拉输入
PC_CR2_C21=1; //启用中断
PD_DDR_DDR7=0; //输入模式
PD_CR1_C17=1; //上拉输入
PD_CR2_C27=1; //启用中断
EXTI_CR1|=0x10;//PC上升沿触发
}
int main( void )
{
init();
asm("rim"); //开中断
asm("trap"); //软件中断
while(1)
{
LED=~LED;
delay();
}
}
最后留个小疑问。
不可屏蔽中断是不是不需要使用rim指令来开启?
进入中断服务函数后不想被其它不可屏蔽中断打断,如何处理?
使用rim指令关闭中断?
知道的小朋友请踊跃回答!
STM8首次学习实验~流水灯
http://bbs.mydigit.cn/read.php?tid=2452931
STM8学习之——中断
http://bbs.mydigit.cn/read.php?tid=2453643
STM8学习之——TIMER4定时器
http://bbs.mydigit.cn/read.php?tid=2456190
STM8学习之——timer1输入捕获
http://bbs.mydigit.cn/read.php?tid=2457109
STM8学习之——timer1外部时钟源模式2
http://bbs.mydigit.cn/read.php?tid=2459809
STM8学习之——timer1周期测量
http://bbs.mydigit.cn/read.php?tid=2461507
STM8学习之——周期测量的疑问
http://bbs.mydigit.cn/read.php?tid=2462114
STM8学习之——timer1频率占空比测量
http://bbs.mydigit.cn/read.php?tid=2464249
STM8学习之——timer1 PWM输出
http://bbs.mydigit.cn/read.php?tid=2467013
STM8学习之——AWU自动唤醒
http://bbs.mydigit.cn/read.php?tid=2477122
STM8学习之——BEEP资源
http://bbs.mydigit.cn/read.php?tid=2477224
STM8学习之——IWDG独立看门狗
http://bbs.mydigit.cn/read.php?tid=2477395
STM8学习之——WWDG窗口看门狗
http://bbs.mydigit.cn/read.php?tid=2477802
STM8学习之——UART串口
http://bbs.mydigit.cn/read.php?tid=2479924
本帖最近打赏记录:共
2
条打赏
,
M币
+16
夕阳飞雪
M币
+8
我这不是帮帮团,请原谅不能加更多的分,看看这人气与关注度,不知道你能坚持多久。
2018-06-18
66ok66
M币
+8
有点意思,补分了~
2018-06-17
回复
举报
离线
夕阳飞雪
UID:2260461
注册时间
2017-05-06
最后登录
2018-12-09
在线时间
179小时
发帖
1085
搜Ta的帖子
精华
0
M币
1599
专家
8
访问TA的空间
加好友
用道具
数码1段
发帖
1085
M币
1599
专家
8
粉丝
44
加关注
发消息
只看该作者
1楼
发表于: 2018-06-15
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
zeze10000
UID:1463162
注册时间
2013-06-16
最后登录
2024-07-28
在线时间
782小时
发帖
2858
搜Ta的帖子
精华
2
M币
8559
专家
35
访问TA的空间
加好友
用道具
数码3段
发帖
2858
M币
8559
专家
35
粉丝
112
加关注
发消息
只看该作者
2楼
发表于: 2018-06-15
回 夕阳飞雪 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
zeze10000
UID:1463162
注册时间
2013-06-16
最后登录
2024-07-28
在线时间
782小时
发帖
2858
搜Ta的帖子
精华
2
M币
8559
专家
35
访问TA的空间
加好友
用道具
数码3段
发帖
2858
M币
8559
专家
35
粉丝
112
加关注
发消息
只看该作者
3楼
发表于: 2018-06-15
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
夕阳飞雪
UID:2260461
注册时间
2017-05-06
最后登录
2018-12-09
在线时间
179小时
发帖
1085
搜Ta的帖子
精华
0
M币
1599
专家
8
访问TA的空间
加好友
用道具
数码1段
发帖
1085
M币
1599
专家
8
粉丝
44
加关注
发消息
只看该作者
4楼
发表于: 2018-06-16
回 zeze10000 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
netbeetle
UID:1019708
注册时间
2011-12-13
最后登录
2024-03-13
在线时间
300小时
发帖
702
搜Ta的帖子
精华
0
M币
1011
专家
3
访问TA的空间
加好友
用道具
数码1级
发帖
702
M币
1011
专家
3
粉丝
12
加关注
发消息
只看该作者
5楼
发表于: 2018-06-16
回 夕阳飞雪 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
夕阳飞雪
UID:2260461
注册时间
2017-05-06
最后登录
2018-12-09
在线时间
179小时
发帖
1085
搜Ta的帖子
精华
0
M币
1599
专家
8
访问TA的空间
加好友
用道具
数码1段
发帖
1085
M币
1599
专家
8
粉丝
44
加关注
发消息
只看该作者
6楼
发表于: 2018-06-16
回 netbeetle 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
netbeetle
UID:1019708
注册时间
2011-12-13
最后登录
2024-03-13
在线时间
300小时
发帖
702
搜Ta的帖子
精华
0
M币
1011
专家
3
访问TA的空间
加好友
用道具
数码1级
发帖
702
M币
1011
专家
3
粉丝
12
加关注
发消息
只看该作者
7楼
发表于: 2018-06-16
回 夕阳飞雪 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
66ok66
UID:1176970
注册时间
2012-06-12
最后登录
2026-04-19
在线时间
1335小时
发帖
1356
搜Ta的帖子
精华
0
M币
860
专家
10
访问TA的空间
加好友
用道具
数码2段
发帖
1356
M币
860
专家
10
粉丝
21
加关注
发消息
只看该作者
8楼
发表于: 2018-06-17
请登录后查看
[ 此帖被66ok66在2018-06-17 15:58重新编辑 ]
本帖最近打赏记录:共
条打赏
回复
举报
离线
夕阳飞雪
UID:2260461
注册时间
2017-05-06
最后登录
2018-12-09
在线时间
179小时
发帖
1085
搜Ta的帖子
精华
0
M币
1599
专家
8
访问TA的空间
加好友
用道具
数码1段
发帖
1085
M币
1599
专家
8
粉丝
44
加关注
发消息
只看该作者
9楼
发表于: 2018-06-18
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
发帖
回复
返回列表
1
2
http://bbs.mydigit.cn
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
隐藏
快速跳转
◇产品交易区◇
我爱优惠购
数码交易区
数码值得买
◇电脑之家◇
电脑软硬派
WiFi/路由器
NAS/网络存储
◇数码大家谈◇
数码大家谈
机顶盒/智能电视
数码前沿
◇车主之家◇
谈车论驾
汽车拆客
汽车数码
◇拆客&拆机◇
拆机乐园
行业拆客
硬件博物馆
◇玩家进阶界◇
爱上极客
创意DIY
能工巧匠
◇电子技术区◇
电子学堂
维修达人
我爱单片机
◇半导体存储◇
U盘启动研究
U盘存储技术
SSD存储技术
◇产品讨论区◇
电源/充电器
手电筒/照明
耳机发烧友
◇工具讨论区◇
3D打印/雕刻机
我是工具控
仪表谈谈
◇数字の户外◇
骑行天地
四轴/模型
摄友沙龙
◇网站服务区◇
站务中心
家有评测
缘聚茶楼
关闭
关闭
选中
1
篇
全选