OpenEdv-开源电子网

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

这个程序软仿真过不去,硬仿真过去了,然后又过不去了。好头大,能帮我看一下码??

[复制链接]

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-4
在线时间
14 小时
发表于 2015-5-30 17:18:40 | 显示全部楼层 |阅读模式
5金钱

void NRF24L01_Init(void)
{  
 GPIO_InitTypeDef GPIO_InitStructure;
   SPI_InitTypeDef  SPI_InitStructure;
 NVIC_InitTypeDef NVIC_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;       

 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_SPI1|RCC_APB2Periph_AFIO, ENABLE );
 
 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //PA.5.6.7复用推挽//SCK.MOSI.MISO
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);      
 GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_6);//上拉 
       
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //PC.4P片选低电平使能
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;             //PC.4推挽   CSN
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure); 
  
 GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;   //EXTI5_IRQn可对应于PA.5------PG.5
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PC5 下拉输入 
 GPIO_Init(GPIOC, &GPIO_InitStructure); 
 
 GPIO_ResetBits(GPIOC,GPIO_Pin_5|GPIO_Pin_4);//PC4,5,下拉  
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //PA.4推挽   CE
  GPIO_Init(GPIOA, &GPIO_InitStructure);   
 GPIO_ResetBits(GPIOA,GPIO_Pin_4);//PC4,5,上拉 
 
    
  
   NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                    //NRF24L01 中断响应
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;            //抢占优先级 0
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                //子优先级为1
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                    //使能
   NVIC_Init(&NVIC_InitStructure);                                               
 
   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);       //NRF24L01 IRQ  PC5
   EXTI_InitStructure.EXTI_Line = EXTI_Line5;                     
   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;               //EXTI中断
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;           //下降沿触发
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;                           //使能
   EXTI_Init(&EXTI_InitStructure);   

 

  
    SPI_Cmd(SPI1, DISABLE);  // SPI外设不使能
 

 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //SPI设置为双线双向全双工
 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;  //SPI主机
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;  //发送接收8位帧结构
 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;  //时钟悬空低
 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //数据捕获于第1个时钟沿
 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;  //NSS信号由软件控制
 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;  //定义波特率预分频的值:波特率预分频值为16
 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //数据传输从MSB位开始
 SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC值计算的多项式
 SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器


 SPI_Cmd(SPI1, ENABLE); //使能SPI外设
   
 NRF24L01_CE=0;    //失能24L01   
 NRF24L01_CSN=1;   //SPI片选取消 
      
}

最佳答案

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

已解决,是中断函数在作怪啊!!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-4
在线时间
14 小时
 楼主| 发表于 2015-5-30 17:18:41 | 显示全部楼层
已解决,是中断函数在作怪啊!!!!
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-4
在线时间
14 小时
 楼主| 发表于 2015-5-30 17:19:05 | 显示全部楼层
while(NRF24L01_Check()) //检查NRF24L01是否在位.
{

delay_ms(300);
PAout(2)=!PAout(2);
delay_ms(300);
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-30 22:59:20 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-5-29
在线时间
0 小时
发表于 2015-5-31 10:19:01 | 显示全部楼层
好像这个24l01调试的时候是不正常的,SPI速度低了也不行,直接跑起又可以。不知道是哪地方不对。
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2015-3-4
在线时间
14 小时
 楼主| 发表于 2015-6-1 10:30:02 | 显示全部楼层
2401收发引脚都要进行中断判断,所以不能利用它的中断引脚干别的事了。新手很容易犯得错误,写出来仅供参考啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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