久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3311|回復: 15
收起左側

求助!各位大神幫我看看哪里錯誤

  [復制鏈接]
ID:242578 發表于 2017-11-8 12:02 | 顯示全部樓層 |閱讀模式
錯誤提示如下:

QQ截圖20171108120044.png


程序如下:

//#include "NUC505Series.h"
//#include "PressureSensor.h"
//#define PSESNOR_ADDR 0x6D
volatile uint8_t i2c1_read = 0;
volatile uint8_t i2c1_addr = 0;
volatile uint8_t i2c1_reg = 0;
volatile uint8_t i2c1_data;
volatile uint8_t i2c1_done = 0;
uint8_t gpu8Pressure[5] = {0};


void I2C1_IRQHandler(void)
{
    uint32_t u32Status;

    u32Status = I2C_GET_STATUS(I2C1);

    if (I2C_GET_TIMEOUT_FLAG(I2C1))
    {
        I2C_ClearTimeoutFlag(I2C1);
    }
    else
    {
        if (i2c1_read)
        {
         switch (u32Status)
{
case 0x08:
//Write SLA+W to Register I2CDAT
I2C_SET_DATA(I2C1, (i2c1_addr << 1));
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 0x18:
//SLA+W has been transmitted and ACK has been received
I2C_SET_DATA(I2C1, i2c1_reg);
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 0x20:
//SLA+W has been transmitted and NACK has been received
I2C_SET_CONTROL_REG(I2C1, I2C_STA | I2C_STO | I2C_SI);
break;
case 0x28:
I2C_SET_CONTROL_REG(I2C1, I2C_STA | I2C_SI);
break;
case 0x10:
//Repeat START has been transmitted and prepare SLA+R
I2C_SET_DATA(I2C1, (i2c1_addr << 1) | 0x01);  //Write SLA+R to Register I2CDAT
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 0x40:
//SLA+R has been transmitted and ACK has been received
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 0x58:
//DATA has been received and NACK has been returned

i2c1_data = I2C_GET_DATA(I2C1);
I2C_SET_CONTROL_REG(I2C1, I2C_STO | I2C_SI);
i2c1_done = 1;
break;
}
        }
        else
        {
         switch (u32Status)
{

case 0x08: //START has been transmitted and prepare SLA+W
I2C_SET_DATA(I2C1, (i2c1_addr << 1)); //Write SLA+W to Register I2CDAT
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 0x18: // SLA+R has been transmitted and ACK has been received
I2C_SET_DATA(I2C1, i2c1_reg);
I2C_SET_CONTROL_REG(I2C1, I2C_SI);
break;
case 20:
I2C_SET_CONTROL_REG(I2C1, I2C_STA | I2C_STO | I2C_SI);  
break;
case 0x28: //DATA has been received and NACK has been returned
I2C_SET_DATA(I2C1, i2c1_data);
I2C_SET_CONTROL_REG(I2C1, I2C_STO | I2C_SI);
i2c1_done = 1;
break;
}
        }
    }
u32Status = I2C_GET_STATUS(I2C1);
}


void I2C1_Read(uint8_t u8Addr, uint8_t u8RegAddr, uint8_t *pu8RetValue)
{
    i2c1_done = 0;
    i2c1_read = 1;
    i2c1_addr = u8Addr;
    i2c1_reg = u8RegAddr;
    I2C_SET_CONTROL_REG(I2C1, I2C_STA);
    while (!i2c1_done);
    *pu8RetValue = i2c1_data;
}



void I2C1_Write(uint8_t u8Addr, uint8_t u8RegAddr, uint8_t u8Value)
{
    i2c1_done = 0;
    i2c1_read = 0;
    i2c1_addr = u8Addr;
    i2c1_reg = u8RegAddr;
    i2c1_data = u8Value;
    I2C_SET_CONTROL_REG(I2C1, I2C_STA);
    while (!i2c1_done);

}

void Sample()
{
   I2C1_Write(PSESNOR_ADDR, 0x30, 0x0A);
   I2C1_Read(PSESNOR_ADDR, 0x30, &gpu8Pressure[0]);
   I2C1_Read(PSESNOR_ADDR, 0x06, &gpu8Pressure[0]);
   I2C1_Read(PSESNOR_ADDR, 0x07, &gpu8Pressure[1]);
   I2C1_Read(PSESNOR_ADDR, 0x08, &gpu8Pressure[2]);
   I2C1_Read(PSESNOR_ADDR, 0x09, &gpu8Pressure[3]);
   I2C1_Read(PSESNOR_ADDR, 0x0A, &gpu8Pressure[4]);
}

void TMR2_IRQHandler(void)
{
    // clear timer interrupt flag
    TIMER_ClearIntFlag(TIMER2);

    //Sample();
    TIMER_GetIntFlag(TIMER2);
}

void PressureSensor_Init(void)
{
uint8_t u8A5 = 0;
I2C_Open(I2C1, 400000);

I2C_EnableInt(I2C1);
NVIC_EnableIRQ(I2C1_IRQn);

I2C1_Read(PSESNOR_ADDR, 0xA5, &u8A5);
u8A5 &= 0xFD;
I2C1_Write(PSESNOR_ADDR, 0xA5, u8A5);


    while (1)
    {
        Sample();
        msDelay(100);
    }

TIMER_Open(TIMER2, TIMER_PERIODIC_MODE, 10);
    TIMER_EnableInt(TIMER2);
    NVIC_EnableIRQ(TMR2_IRQn);
    TIMER_Start(TIMER2);

}


回復

使用道具 舉報

ID:111634 發表于 2017-11-9 19:31 | 顯示全部樓層
為什么這么長時間沒人回帖?冗長程序沒人看,特別是沒有注解的。你想啊!別人有那么多時間嗎?
回復

使用道具 舉報

ID:247870 發表于 2017-11-9 20:32 來自手機 | 顯示全部樓層
沒注解不好看
回復

使用道具 舉報

ID:246391 發表于 2017-11-9 23:03 | 顯示全部樓層
路過學習一下
回復

使用道具 舉報

ID:111634 發表于 2017-11-10 12:13 | 顯示全部樓層

你怎么“學習一下”?請談談體會。
回復

使用道具 舉報

ID:248046 發表于 2017-11-10 13:56 | 顯示全部樓層
提示在XG....c文件的第四行在i2c1_read缺一個分號,可以檢查下這個位置是不是中英切換出現的問題。也可以看看XG....h頭文件在定義時定義錯誤
回復

使用道具 舉報

ID:246473 發表于 2017-11-10 14:43 | 顯示全部樓層
確認一下void I2C1_Read函數上面是不是多了一個}
回復

使用道具 舉報

ID:247748 發表于 2017-11-10 14:47 | 顯示全部樓層
提示在XG....c文件的第四行在i2c1_read缺一個分號,可以檢查下這個位置是不是中英切換出現的問題。也可以看看XG....h頭文件在定義時定義錯誤

同意這個方法
回復

使用道具 舉報

ID:242578 發表于 2017-11-12 17:20 | 顯示全部樓層
謝謝各位大神的回復,這段程序是壓力傳感器廠家提供的測試程序。由于看不懂C,想用Keil uVision5編譯后,修改為匯編程序。現在編譯錯誤,無法進行下一步。
本人用匯編寫過一些小項目,也正在學習C。
回復

使用道具 舉報

ID:242578 發表于 2017-11-12 17:29 | 顯示全部樓層
zl2168 發表于 2017-11-9 19:31
為什么這么長時間沒人回帖?冗長程序沒人看,特別是沒有注解的。你想啊!別人有那么多時間嗎?

謝謝您的回復,我也是抱著試試看的心態,希望能解決。這段程序是傳感器廠家提供的測試程序。
回復

使用道具 舉報

ID:248710 發表于 2017-11-12 20:07 | 顯示全部樓層
一般注釋是可以用顏色區分的,這么長有點看不懂了,你可以把一些無關緊要的語句刪掉,這樣看起來省力點
回復

使用道具 舉報

ID:248754 發表于 2017-11-12 22:32 | 顯示全部樓層
上一行 少一個分號  應該是
回復

使用道具 舉報

ID:248920 發表于 2017-11-13 14:02 | 顯示全部樓層
你把if (i2c1_read)改成if (2c1_read==0)試試
回復

使用道具 舉報

ID:249005 發表于 2017-11-13 17:55 | 顯示全部樓層
坐等。。。。。。。。。。。。。。
回復

使用道具 舉報

ID:249025 發表于 2017-11-13 18:59 | 顯示全部樓層
路過學習一下
回復

使用道具 舉報

ID:249083 發表于 2017-11-13 21:10 | 顯示全部樓層
第三十七行有多打東西
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线免费观看视频 | 美女一区二区在线观看 | 欧美日韩第一页 | 伊人色综合久久久天天蜜桃 | 99国内精品| 国产在线播放一区二区三区 | 二区在线视频 | www.久草.com| 日本偷偷操 | 国产一区二区三区四区三区四 | 午夜精品久久久久久久星辰影院 | 国产色婷婷精品综合在线手机播放 | 日本精品视频在线 | 久久久久久蜜桃一区二区 | 一区二区国产在线观看 | xxxcom在线观看 | 久久精品超碰 | 国产精品无码久久久久 | 欧美美女二区 | 成人片免费看 | 有码一区| 91色视频在线观看 | 国产视频福利在线观看 | 欧美高清性xxxxhdvideosex | 欧美激情视频网站 | 亚洲精品久久久久中文字幕欢迎你 | 欧美极品在线 | 日韩播放 | 中文字幕日韩欧美 | 国产精品入口 | 久久久久无码国产精品一区 | 久久久久九九九九 | 亚洲a一区 | 中文字幕乱码一区二区三区 | 一区二区精品 | 日韩在线中文字幕 | 国产乱码精品一区二区三区忘忧草 | 久久精品国产清自在天天线 | 日本午夜一区 | 久久久国产一区二区三区 | 免费一区二区三区 |