野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13478|回复: 5

移植18b20和以太网模块会有冲突吗?

[复制链接]
发表于 2015-5-5 15:36:21 | 显示全部楼层 |阅读模式
我做毕业设计,未加入以太网模块之前程序一切正常,包括ui操作还有无线模块控制,18b20测温度,移植入以太网模块之后测温度突然不行了,是引脚有冲突吗还是什么?排查后死在DS18B20_Init()这一句上面,可以帮下忙吗?
回复

使用道具 举报

 楼主| 发表于 2015-5-5 15:49:13 | 显示全部楼层
int32_t nrf_sign = 0;
        char tem_num[24] = {0};
                /* 3õê¼»ˉLCD */
                LCD_Init();       
                //LCD_Clear(0, 0, 240, 320, BACKGROUND);               
               
                /* 3õê¼»ˉsd¿¨ÎļtÏμí3£¬òòÎaoo×ÖμÄ×Ö¿a·ÅÔúáËsd¿¨àïÃæ */
                Sd_fs_init();       
       
                /* 3õê¼»ˉ′®¿ú */
         // USART1_Config();
       
                /* Ïμí3¶¨ê±Æ÷ 1us ¶¨ê±3õê¼»ˉ */
                 SysTick_Init();                               
         
                /* 3õê¼»ˉLED */
                LED_GPIO_Config();
       
                /*3õê¼»ˉ°′¼ü*/
                EXTI_Key_Config();
       
                while( DS18B20_Init());
                /* ê1ÄüμçÔ′1üàíμ¥ÔaμÄê±Öó */
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR , ENABLE);
                //SPI_NRF_Init();
               
                /* 3õê¼»ˉía2¿FLASH */
                SPI_FLASH_Init();
                //SPI_FLASH_SectorErase(0);
  
                /* ′¥ÃtÆáIOoíÖD¶Ï3õê¼»ˉ */
                Touch_Init();
               
                //′¥ÃtÆáD£×¼
                lcd_link();
                /* ÏÔê¾LED¿ØÖƽçÃæí¼Æ¬ */
                lcd_ui();
                SPI_NRF_Init();
   
  /* ′®¿ú13õê¼»ˉ */
        USART1_Config();


         /*¼ì2aNRFÄ£¿éóëMCUμÄᬽó*/
           status = NRF_Check();

        /*ÅD¶Ïᬽó×′ì¬*/  
   if(status == SUCCESS)          
                    printf("\r\n      NRFóëMCUᬽó3é1|£¡\r\n");  
   else          
                printf("\r\n  NRFóëMCUᬽó꧰ü£¬ÇëÖØD¼ì2é½óÏß¡£\r\n");
                while(1)
                {
                        while(ui_sign == 1 || ui_sign == 2 || ui_sign == 3)
                        {
                                printf("\r\n Ö÷»ú¶Ë ½øèë×Ôó|′e·¢ËíÄ£ê½\r\n");
                                NRF_TX_Mode();
                        
                                //¿aê¼·¢Ëíêy¾Y       
                                /*status = NRF_Tx_Dat(txbuf);          
                  
                                //ÅD¶Ï·¢Ëí×′ì¬
                                switch(status)
                                        {
                                                case MAX_RT:
                                                        printf("\r\n Ö÷»ú¶Ë û½óêÕμ½ó|′eDÅoÅ£¬·¢Ëí′Îêy3¬1yÏT¶¨Ö죬·¢Ëí꧰ü¡£ \r\n");
                                                break;
       
                                                case ERROR:
                                                        printf("\r\n Î′ÖaÔ-òòμ¼Ö·¢Ëí꧰ü¡£ \r\n");
                                                break;
       
                                                case TX_DS:
                                                        printf("\r\n Ö÷»ú¶Ë ½óêÕμ½ ′ó»ú¶Ë μÄó|′eDÅoÅ£¬·¢Ëí3é1|£¡ \r\n");                        
                                                break;                                                                 
                                        }                                  
        */
                                printf("\r\n Ö÷»ú¶Ë ½øèë½óêÕÄ£꽡£ \r\n");       
                                NRF_RX_Mode();
       
                                //μè′y½óêÕêy¾Y
                                /*status = NRF_Rx_Dat(rxbuf);
       
                                //ÅD¶Ï½óêÕ×′ì¬
                                switch(status)
                                        {
                                                case RX_DR:
                                                        for(i=0;i<4;i++)
                                                                {                                       
                                                                        printf("\r\n &#214;÷&#187;ú&#182;&#203; &#189;óê&#213;μ&#189; ′ó&#187;ú&#182;&#203; ·¢&#203;íμ&#196;êy&#190;Y&#206;a£o%d \r\n",rxbuf[i]);
                                                                        txbuf[i] =rxbuf[i];
                                                                }
                                                break;
       
                                                case ERROR:
                                                                        printf("\r\n &#214;÷&#187;ú&#182;&#203; &#189;óê&#213;3&#246;′í&#161;£   \r\n");
                                                break;                 
                                        }*/
                       
                                                        if((rxbuf[1] == 1) && (ui_sign == 1))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"&#191;a", BLUE);
                                                        else if((ui_sign == 1) && (rxbuf[1] == 0))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"1&#216;", BLUE);
                                                        else if((rxbuf[2] == 1) && (ui_sign == 2))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"&#191;a", BLUE);
                                                        else if((ui_sign == 2) && (rxbuf[2] == 0))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"1&#216;", BLUE);
                                                        else if((rxbuf[3] == 1) && (ui_sign == 3))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"&#191;a", BLUE);
                                                        else if((ui_sign == 3) && (rxbuf[3] == 0))
                                                                LCD_DispEnCh(170, 100, (uint8_t *)"1&#216;", BLUE);
                                                }
                                         while(ui_sign == 4)
                                                        {
                                                        while(DS18B20_Init());
                                                                        sprintf(tem_num,"%.1f &#182;è",DS18B20_Get_Temp());
                                                                        Lcd_GramScan( 1 );
                                                                        LCD_DispEnCh(170,100,tem_num,BLUE);
                                                                                                                                                                       
                                                        }
                                                       
                };
}
       
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 15:51:48 | 显示全部楼层
怎么乱码,晕,无线模块部分因为另一个模块在同学手里,就把等待中断部分屏蔽掉了,其他都正常,telnet控制都正常,就是18b20死在初始化了
回复 支持 反对

使用道具 举报

发表于 2015-5-5 16:06:17 | 显示全部楼层
18b20用的引脚是pb10,没有跟以太网的引脚复用。
ds18b20用到了systick,有中断服务函数,你应该是没有移植中断服务函数
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-5-5 16:22:02 | 显示全部楼层
flyleaf 发表于 2015-5-5 16:06
18b20用的引脚是pb10,没有跟以太网的引脚复用。
ds18b20用到了systick,有中断服务函数,你应该是没有移 ...

谢谢,我把中断服务程序改了一下,温度好了,但是那个中断服务函数以太网中也要用呀,那个怎么办呢?求指教,谢谢!
void SysTick_Handler(void)
{
  /* Update the LocalTime by adding SYSTEMTICK_PERIOD_MS each SysTick interrupt */
  //Time_Update();这一句是以太网里面的中断服务程序
                TimingDelay_Decrement();
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 16:22:39 | 显示全部楼层
flyleaf 发表于 2015-5-5 16:06
18b20用的引脚是pb10,没有跟以太网的引脚复用。
ds18b20用到了systick,有中断服务函数,你应该是没有移 ...

谢谢,我把中断服务程序改了一下,温度好了,但是那个中断服务函数以太网中也要用呀,那个怎么办呢?求指教,谢谢!
void SysTick_Handler(void)
{
  /* Update the LocalTime by adding SYSTEMTICK_PERIOD_MS each SysTick interrupt */
  //Time_Update();这一句是以太网里面的中断服务程序
                TimingDelay_Decrement();
}
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 10:47 , Processed in 0.057259 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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