打印

28335 SCI写TXBUF但寄存器里的值没变化是什么原因

[复制链接]
1105|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拉克丝|  楼主 | 2017-5-25 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下  通过while循环不断对SCITXBUF写数据 那么我观察寄存器里的值应该是不断变化的 但是实际运行时寄存器内的值无变化 PC端接受不到数据
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

void main(void)
{

  //  Uint16 ReceivedChar;
  //  char *msg;

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
   InitSysCtrl();

// Step 2. Initalize GPIO:
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
   // InitGpio(); Skipped for this example

// For this example, only init the pins for the SCI-A port.
// This function is found in the DSP2833x_Sci.c file.
   InitScibGpio();

// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
   DINT;

// Initialize PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP2833x_PieCtrl.c file.
   InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
   IER = 0x0000;
   IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
// This will populate the entire table, even if the interrupt
// is not used in this example.  This is useful for debug purposes.
// The shell ISR routines are found in DSP2833x_DefaultIsr.c.
// This function is found in DSP2833x_PieVect.c.
   InitPieVectTable();
   ScibRegs.SCICCR.bit.STOPBITS=0;
   ScibRegs.SCICCR.bit.PARITYENA=0;
   ScibRegs.SCICCR.bit.SCICHAR=7;
   ScibRegs.SCICTL1.bit.RXENA=1;
   ScibRegs.SCICTL1.bit.TXENA=1;
   ScibRegs.SCIHBAUD=0X0001;
   ScibRegs.SCILBAUD=0X00E7;
   ScibRegs.SCICTL1.bit.TXWAKE=1;
   ScibRegs.SCICTL1.bit.SWRESET=1;
   ScibRegs.SCITXBUF = 0x2;
   while(1)
           {DELAY_US(200);
            ScibRegs.SCITXBUF=0x5;
            DELAY_US(200);
            ScibRegs.SCITXBUF=0x2;
            DELAY_US(200);
                ScibRegs.SCITXBUF=0x3;
           }

相关帖子

沙发
309030| | 2017-5-25 21:48 | 只看该作者
可能是你的SCI模块初始化不对,单步执行看看

使用特权

评论回复
板凳
迪卡| | 2017-5-25 22:02 | 只看该作者
while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
    ScibRegs.SCITXBUF=0xa;

使用特权

评论回复
地板
1988020566| | 2017-5-26 22:41 | 只看该作者
这个不是连续的写入吗

使用特权

评论回复
5
1988020566| | 2017-5-26 22:42 | 只看该作者
单步调试每一步骤都能执行吗?

使用特权

评论回复
6
51xlf| | 2017-5-29 22:21 | 只看该作者
TX_EN?

使用特权

评论回复
7
i1mcu| | 2017-5-29 22:21 | 只看该作者
往寄存器ScibRegs.SCITXBUF写数据

使用特权

评论回复
8
pmp| | 2017-5-29 22:22 | 只看该作者
FIFO就会把所要发送的数据都会自动的发送出去

使用特权

评论回复
9
mmbs| | 2017-5-29 22:22 | 只看该作者
ScibRegs.SCICTL2.bit.TXRDY == 1

使用特权

评论回复
10
1988020566| | 2017-5-29 22:23 | 只看该作者
ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;

使用特权

评论回复
11
houjiakai| | 2017-5-29 22:23 | 只看该作者
ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;

使用特权

评论回复
12
cemaj| | 2017-5-29 22:24 | 只看该作者
ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;
  delay();

使用特权

评论回复
13
youtome| | 2017-5-29 22:24 | 只看该作者
如果只要中断寄存器配置好, 可以直接进入中断

使用特权

评论回复
14
51xlf| | 2017-5-29 22:25 | 只看该作者
前加延时试试

使用特权

评论回复
15
i1mcu| | 2017-5-29 22:25 | 只看该作者
数据不会立刻完成发送的。

使用特权

评论回复
16
pmp| | 2017-5-29 22:25 | 只看该作者
ScibRegs.SCIFFTX.bit.SCIFFENA=0;

使用特权

评论回复
17
mmbs| | 2017-5-29 22:25 | 只看该作者
TXRDY == 1 判断当前状态。

使用特权

评论回复
18
1988020566| | 2017-5-29 22:25 | 只看该作者
在发送中断里清发送中断标志

使用特权

评论回复
19
houjiakai| | 2017-5-29 22:25 | 只看该作者
若不清fifo发送中断标志则,不进入发送中断

使用特权

评论回复
20
youtome| | 2017-5-29 22:25 | 只看该作者
FIFO中断数据配置好了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

150

主题

920

帖子

2

粉丝