专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
有大神能讲解这句代码吗?能否配置成寄存器那样,MY_NVIC_Init(1,3,TIM3_IRQn,2);
2019-07-20 23:02
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
4003
14
1576
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
下页
2019-07-21 18:52
关于void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group) 函数
复制代码
1 //设置向量表偏移地址
2 //NVIC_VectTab:基址
3 //Offset:偏移量
4 void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)
5 {
6 SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器
7 //用于标识向量表是在CODE区还是在RAM区
8 }
9 //设置NVIC分组
10 //NVIC_Group:NVIC分组 0~4 总共5组
11 void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group)
12 {
13 u32 temp,temp1;
14 temp1=(~NVIC_Group)&0x07;//取后三位
15 temp1<<=8;
16 temp=SCB->AIRCR; //读取先前的设置
17 temp&=0X0000F8FF; //清空先前分组
18 temp|=0X05FA0000; //写入钥匙
19 temp|=temp1;
20 SCB->AIRCR=temp; //设置分组
21 }
22 //设置NVIC
23 //NVIC_PreemptionPriority:抢占优先级
24 //NVIC_SubPriority :响应优先级
25 //NVIC_Channel :中断编号
26 //NVIC_Group :中断分组 0~4
27 //注意优先级不能超过设定的组的范围!否则会有意想不到的错误
28 //组划分:
29 //组0:0位抢占优先级,4位响应优先级
30 //组1:1位抢占优先级,3位响应优先级
31 //组2:2位抢占优先级,2位响应优先级
32 //组3:3位抢占优先级,1位响应优先级
33 //组4:4位抢占优先级,0位响应优先级
34 //NVIC_SubPriority和NVIC_PreemptionPriority的原则是,数值越小,越优先
35 void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)
36 {
37 u32 temp;
38 MY_NVIC_PriorityGroupConfig(NVIC_Group);//设置分组
39 temp=NVIC_PreemptionPriority<<(4-NVIC_Group);
40 temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
41 temp&=0xf;//取低四位
42 NVIC->ISER[NVIC_Channel/32]|=(1<<NVIC_Channel%32);//使能中断位(要清除的话,相反操作就OK)
43 NVIC->IP[NVIC_Channel]|=temp<<4;//设置响应优先级和抢断优先级
44 }
加载中...
查看其它14个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
复制代码
1 //设置向量表偏移地址
2 //NVIC_VectTab:基址
3 //Offset:偏移量
4 void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)
5 {
6 SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器
7 //用于标识向量表是在CODE区还是在RAM区
8 }
9 //设置NVIC分组
10 //NVIC_Group:NVIC分组 0~4 总共5组
11 void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group)
12 {
13 u32 temp,temp1;
14 temp1=(~NVIC_Group)&0x07;//取后三位
15 temp1<<=8;
16 temp=SCB->AIRCR; //读取先前的设置
17 temp&=0X0000F8FF; //清空先前分组
18 temp|=0X05FA0000; //写入钥匙
19 temp|=temp1;
20 SCB->AIRCR=temp; //设置分组
21 }
22 //设置NVIC
23 //NVIC_PreemptionPriority:抢占优先级
24 //NVIC_SubPriority :响应优先级
25 //NVIC_Channel :中断编号
26 //NVIC_Group :中断分组 0~4
27 //注意优先级不能超过设定的组的范围!否则会有意想不到的错误
28 //组划分:
29 //组0:0位抢占优先级,4位响应优先级
30 //组1:1位抢占优先级,3位响应优先级
31 //组2:2位抢占优先级,2位响应优先级
32 //组3:3位抢占优先级,1位响应优先级
33 //组4:4位抢占优先级,0位响应优先级
34 //NVIC_SubPriority和NVIC_PreemptionPriority的原则是,数值越小,越优先
35 void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)
36 {
37 u32 temp;
38 MY_NVIC_PriorityGroupConfig(NVIC_Group);//设置分组
39 temp=NVIC_PreemptionPriority<<(4-NVIC_Group);
40 temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
41 temp&=0xf;//取低四位
42 NVIC->ISER[NVIC_Channel/32]|=(1<<NVIC_Channel%32);//使能中断位(要清除的话,相反操作就OK)
43 NVIC->IP[NVIC_Channel]|=temp<<4;//设置响应优先级和抢断优先级
44 }
一周热门 更多>