OpenEdv-开源电子网

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

中断优先级配置问题

[复制链接]

5

主题

6

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2014-12-18
在线时间
0 小时
发表于 2014-12-26 09:23:54 | 显示全部楼层 |阅读模式
5金钱
串口初始化中已经有优先级配置,为啥main()函数中还要有个
 NVIC_Configuration();中断优先级配置 作用是啥。感觉像多此一举。



void uart2_init(u32 bound)


051 {
052      
053   GPIO_InitTypeDef GPIO_InitStructure;
054     USART_InitTypeDef USART_InitStructure;
055     NVIC_InitTypeDef NVIC_InitStructure;
056       
057     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
058     RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
059     USART_DeInit(USART2); 
060     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.9
061     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
062     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //??????
063     GPIO_Init(GPIOA, &GPIO_InitStructure); //???PA9
064     
065     //USART1_RX   PA.10
066     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
067     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
068     GPIO_Init(GPIOA, &GPIO_InitStructure);
069  
070    
071  
072    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;//串口初始化配置中优先级
073     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
074     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;     
075     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        
076     NVIC_Init(&NVIC_InitStructure);
077    
078   
079  
080     USART_InitStructure.USART_BaudRate = bound;
081     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
082     USART_InitStructure.USART_StopBits = USART_StopBits_1;
083     USART_InitStructure.USART_Parity = USART_Parity_No;
084 USART_InitStructure.USART_HardwareFlowControl =  USART_HardwareFlowControl_None;
085     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
086  
087     USART_Init(USART2, &USART_InitStructure); //?????
088     USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//????
089     USART_Cmd(USART2, ENABLE);                    //????
090  
091 }


主函数
int main(void)
49  {  
50     delay_init();            //???????   
51     NVIC_Configuration();    //中断优先级配置,此处的作用什么什么
??????????????????????????????????????????????????????????????
52     uart_init(9600);        //??????9600    
53     uart2_init(9600);
54     uart3_init(9600);
55     uart4_init(9600);
56     uart5_init(9600);
57     Adc_Init();             //ADC???

哪位大侠指点一下?????????????????????????????????

最佳答案

查看完整内容[请看2#楼]

NVIC_Configuration是配置分组用的。 NVIC_Init!=NVIC_Configuration。得搞清楚。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-26 09:23:55 | 显示全部楼层
NVIC_Configuration是配置分组用的。
NVIC_Init!=NVIC_Configuration。得搞清楚。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-12-26 09:58:01 | 显示全部楼层
优先级分组,如果中断多了才有用。
分成几组,2,就是2^2=4个抢占优先级. 不够用就换成2下面的如3,就是可以分2^3=8个抢占级别。

串口里面那个是在这个分组的基础上才能设置的。你选了2,就不能设置为大于3的了。只有0-3这4个。
我之前这么认为的,最近也没看,你再问问别人。
小小蜗牛
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 01:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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