发 帖  
原厂入驻New
[问答] 为什么我的if语句没有得到任何真正的?
485 PSoc UART 寄存器
分享
新的PSoC可能在上一篇文章中看到,但是我正在与UART合作。我想知道为什么我的IF语句没有得到任何真正的?我几乎肯定这是一件简单的事。我查看了UART模块的数据表。
本质上,我正在寻找状态寄存器准备轮询(如要求)
Uti16读写器=0;
UIT16写重复符=0;
当(RealIdult<4096){
如果(uARTHAREADRXSTATUSSUE)= = UARTHARXRXSTSTYFIFOSO NOTAVTY){
RealvurRay[读数器] = UARTHETGETCHARE();
读写器+;
}
如果(UARTHARETCTXSTATUSSUE)= = UARTHOTXXSTSTYFIFOXNOTHOLL FULL){
UARTHI PUTCHAR(SDENARDATAL [读数器]);
写迭代器+;
}

以上来自于百度翻译


     以下为原文
  New to PSoC as maybe seen in a previous post, however I'm working with UART. I'm wondering why my if statements aren't getting any coming in true? I'm almost positive it's something simple. I looked at the datasheet for the UART module.
    Essentially I'm looking for the status registers to be ready by polling(as asked for)
   

        uint16 readIterator=0;
        uint16 writeIterator=0;
        while(readIterator<4096){
            if(UART_ReadRxStatus()==UART_RX_STS_FIFO_NOTEMPTY ){
                receiveArray[readIterator]=UART_GetChar();
                readIterator++;
                
            }
            if(UART_ReadTxStatus()==UART_TX_STS_FIFO_NOT_FULL ){
              UART_PutChar(sendArray[readIterator]);
              writeIterator++;           

        }
0
2019-6-27 07:40:04   评论 分享淘帖 邀请回答

相关问题

6个回答
一般来说,仅仅发布代码来获得帮助是不够的。
还有其他问题会影响故障排除,比如HW。
设置等。
考虑发布你的项目,让生活更容易排除故障。
“文件”创建者
“创建工作区束”
问候,Dana。

以上来自于百度翻译


     以下为原文
  Its not enough to just post code to get help, generally speaking.
    There are other issues that can affect troubleshooting, like HW
    setup, etc..
     
        
              
    Consider posting your project, makes life easier to troubleshoot.
     
    “File”                                                             Creator
    “Create Workspace Bundle”
     
     
    Regards, Dana.
2019-6-27 07:46:01 评论

举报

我刚刚意识到,我把它放在错误的子论坛中,意在张贴这是PSoC 5,但是文件是附加的。
谢谢及时的回复。
邮编
519.2 K

以上来自于百度翻译


     以下为原文
   I just realised I posted this in the wrong subforum, meant to post this is PSoC 5, but the file is attached.
    Thanks for the timely reply.


2019-6-27 07:59:51 评论

举报

你进入了while循环吗?
这有冲突的数据类型——
UINT8 SeDealSt[ 4096 ];UINT8接收电压[4096 ];int i;(i=0;i;lt;4096;i++){sEndAld=i;接收v=0;}
发送数组中的256个值的模式重复了16次,因为您声明了
作为UIT8。
问候,Dana。

以上来自于百度翻译


     以下为原文
  Do you get inside the while loop ?
     
    This has conflicting data types -
     
        uint8 sendArray[4096];
    uint8 receiveArray[4096];
    int i;
    for(i=0;i<4096;i++){
     sendArray=i;
     receiveArray=0;
    }
     
    The pattern of 256 values in send array repeats 16 times because you declared it
    as uint8.
     
    Regards, Dana.
2019-6-27 08:17:07 评论

举报

您可能还希望增加堆大小。
堆和堆栈大小减少了3.1,尝试恢复到3个级别4K和16K。
3.1个默认设置现在是128字节和2K。
问候,Dana。

以上来自于百度翻译


     以下为原文
  You might also want to increase your heap size -
     
     
     
     
        
              
    The heap and stack size were reduced in 3.1, try restoring to 3.0 levels 4K and 16K respectively.
    3.1 default settings are now 128 bytes and 2K.
     
    Regards, Dana.
2019-6-27 08:36:54 评论

举报

谢谢你,Dana。我今天有点晚了,昨天晚上我们吃了一顿很棒的意大利晚餐……
我首先想到的是:中断应该被启用(通常)。
存在一个错误:插入一个包含SytFo.lt;
如果(UARTHARETCTXSTATUSSUE)= = UARTHOTXXSTSTYFIFOXNOTHOLL FULL){
将失败:在开始,初始化后UARTHARTXYSTSTYFIFOSULL将被设置,因此结果将永远不等于您质疑的UARTHARTXYSTSYFIFOXNOTHOLL FULL。
最好使用(UARTHARETCTXSTATUSSUE)和UARTHOXTXYSTSSFIFOWONNOTHOLL),当设置位时,这是正确的。
同样适用于AyRead xStUsUs()。
最后,在嵌入式世界中,你总是有一个无限循环重复,直到PoCR关闭。当你的主体()在到达终点时返回时,你知道会发生什么吗?
最好在末尾放置一个无限循环来等待或将整个发送和恢复部分放入无限的while循环中。
快乐编码
鲍勃

以上来自于百度翻译


     以下为原文
  Thank you, Dana. I'm a bit late today, we had a great italian dinner yesterday evening...
    What first jumps to my mind: Interrupts should be enabled (usually).
    There is an error: insert a #include <stdio.h>
to have sprintf() resolved.
     
            if(UART_ReadTxStatus()==UART_TX_STS_FIFO_NOT_FULL ){
 
    will fail: In the beginning, after initialization   UART_TX_STS_FIFO_EMPTY will be set, too so the result will never be equal to your questioned UART_TX_STS_FIFO_NOT_FULL.
    Better use         if(UART_ReadTxStatus() & UART_TX_STS_FIFO_NOT_FULL ) which will be true, when the bit is set.
    Same applies to _ReadRxStatus().
    Lastly: in the embedded world you always hafe an infinite loop that repeats until powerr switched off. When your main() returns when reaching the end, do you know what will happen?
    Better put an infinite loop at the end to wait or put the whole sending & revieving part into an infinite while-loop.
     
    Happy coding
    Bob
 
2019-6-27 09:27:16 评论

举报

我将就此发布一个案例。没有在TRM的地方,AP注意到启动,
数据路径等。FIFO被清除了吗?
问候,Dana。

以上来自于百度翻译


     以下为原文
  I will post a case on this. No where in TRM, ap note on startup,
    Datapath, etc.. does FIFO getting cleared stated.
     
    Regards, Dana.
2019-6-27 10:04:50 评论

举报

只有小组成员才能发言,加入小组>>

365个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

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