OpenEdv-开源电子网

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

寄存器和库函数,寄存器的哪里写错了,求大神看下!谢谢

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
发表于 2016-4-23 00:29:57 | 显示全部楼层 |阅读模式
1金钱
/*库函数*/
void EXTIX_Init(void)
{

          EXTI_InitTypeDef EXTI_InitStructure;
          NVIC_InitTypeDef NVIC_InitStructure;
          GPIO_InitTypeDef GPIO_InitStructure;


           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能portc时钟
       
          GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;//PC5
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
           GPIO_Init(GPIOC, &GPIO_InitStructure);// 初始化GPIOC5
       
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中断,使能AFIO时钟

//中断线以及中断的初始化设置
          GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);

          EXTI_InitStructure.EXTI_Line=EXTI_Line5;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);                 //初始化EXTI寄存器
       
                NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //使能按键所在的中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;       
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                                       
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断
          NVIC_Init(&NVIC_InitStructure);

}





/*寄存器*/
void exti_init()
{
       
        RCC->APB2ENR|=1<<4;//使能GPIOC时钟
        RCC->APB2ENR|=1;//使能AFIO时钟
       
        GPIOC->CRL&=0XFF0FFFFF;
        GPIOC->CRL|=0X00800000;
        GPIOC->ODR|=1<<5;      //配置PC0为上拉输入
       
        AFIO->EXTICR[1]&=~(0x000f<<4);
        AFIO->EXTICR[1]|=0x02<<4;  //设置PC5连接到中断线上
       
       
        EXTI->IMR|=1<<5;//中断使能
        EXTI->FTSR|=1<<5;//优先级设置

       
        NVIC->ISER[0]=1<<7;//
        NVIC->IP[7]=0Xa0;//       
}


都是实现同一功能
为什么库函数函数的可以实现功能,寄存器的不能,看了好久没发现哪错!!!!

最佳答案

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

好了!!! 最后两行改为 NVIC->ISER[0]=1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
 楼主| 发表于 2016-4-23 00:29:58 | 显示全部楼层
好了!!!
最后两行改为
NVIC->ISER[0]=1<<23;
  NVIC->IP[23]=0Xa0;
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
 楼主| 发表于 2016-4-23 00:33:35 | 显示全部楼层
本人是新手来的,寄存器是看手册写的,可能漏洞百出。。
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
 楼主| 发表于 2016-4-23 09:56:23 | 显示全部楼层
有人吗
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-4-23 09:56:25 | 显示全部楼层
mark,标记一下,坐等大神解答
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2016-4-23 10:28:53 | 显示全部楼层
PC5  用的是中断线为 EXTI9_5_IRQn=23;   NVIC->ISER[0]=1<<7;//         NVIC->IP[7]=0Xa0;//  这两句明显计算错误  -->  NVIC->ISER[0]=1<<23;//         NVIC->IP[23]=0Xa0;//    既然是新手,最好就是使用写好的函数。
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
 楼主| 发表于 2016-4-23 10:32:09 | 显示全部楼层
  最后一行是 NVIC->IP[23]=0Xa0
  还是不行
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2016-4-18
在线时间
17 小时
 楼主| 发表于 2016-4-23 11:10:30 | 显示全部楼层
lycreturn 发表于 2016-4-23 10:28
PC5  用的是中断线为 EXTI9_5_IRQn=23;   NVIC->ISER[0]=1  NVIC->ISER[0]=1

可是库函数跟着视频走,只会简单的知道哪个函数的作用,函数里该选择什么。觉得这样学下去什么也不懂
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 04:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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