zhouyan1987 发表于 2012-3-18 17:51:54

裸机I/O口初始化顺序问题

本帖最后由 zhouyan1987 于 2012-3-20 11:24 编辑

我今天做串口实验的时候,在主程序里加入了LED灯的程序。
LED_Init();
      UART0_Init(115200);LED灯的初始化在前灯就可以亮

      UART0_Init(115200);
LED_Init();LED灯的初始化在串口初始化之后为什么灯就亮不了了

求指教


void LED_Init()
{
      rGPBCON=(rGPBCON&0xf000ff)|0x015400;      
}
void UART0_Init(unsigned int baudrate)
{
      rGPHCON&=~((3<<4)|(3<<6));
      rGPHCON|=((2<<4)|(2<<6));
      rGPHUP=0x00;
      rULCON0|=0x03;
      rUCON0&=0x9FF;
      rUCON0=0x05;
      rUBRDIV0=(int)((PCLK/baudrate/16)-1);
      rURXH0=0;
}

北极熊 发表于 2012-3-18 22:06:25

少年,你的把你写的LED_Init();程序写出来啊:)

zhouyan1987 发表于 2012-3-19 08:51:33

那两个初始化的程序我都写了 请问下原因

北极熊 发表于 2012-3-19 12:46:11

zhouyan1987 发表于 2012-3-19 08:51 static/image/common/back.gif
那两个初始化的程序我都写了 请问下原因

可能是 rGPBDAT中没有赋值吧,复位后 rGPBDAT的内容不确定,你可以在 rGPBCON=(rGPBCON&0xf000ff)|0x015400;后加上一条向rGPBDAT赋值的语句。再查看一下结果。

zhouyan1987 发表于 2012-3-19 17:24:09

北极熊 发表于 2012-3-19 12:46 static/image/common/back.gif
可能是 rGPBDAT中没有赋值吧,复位后 rGPBDAT的内容不确定,你可以在 rGPBCON=(rGPBCON&0xf000ff)|0x0154 ...

我在主函数里面对rGPBDAT进行赋值了,而且我在调试的时候看了rGPBDAT的5-8位都是低电平 按说LED灯应该是亮的,可实验的时候串口的初始化跟I/O口初始化前后顺序就导致LED的亮与不亮

北极熊 发表于 2012-3-19 22:05:28

把你的程序打包发上来吧,我在板子上试试,这个问题还真奇妙

zhouyan1987 发表于 2012-3-21 09:18:10

北极熊 发表于 2012-3-19 22:05 static/image/common/back.gif
把你的程序打包发上来吧,我在板子上试试,这个问题还真奇妙

程序打包了 麻烦你看看

zhouyan1987 发表于 2012-3-21 10:09:26

北极熊 发表于 2012-3-19 22:05 static/image/common/back.gif
把你的程序打包发上来吧,我在板子上试试,这个问题还真奇妙

我知道了 启动代码有问题 用系统给的启动代码就可以了 自己写的那一段汇编不够全 有问题 我还是自己在研究下吧 麻烦了

北极熊 发表于 2012-3-21 12:57:19

zhouyan1987 发表于 2012-3-21 10:09 static/image/common/back.gif
我知道了 启动代码有问题 用系统给的启动代码就可以了 自己写的那一段汇编不够全 有问题 我还是自己在研究 ...

:)也没帮多少忙

借我你的一生 发表于 2012-3-25 14:35:00

; 修改CPU总线模式
    mrc    p15, 0, r1, c1, c0, 0
    orr    r1, r1, #0xc0000000
    mcr    p15, 0, r1, c1, c0, 0

zhouyan1987 发表于 2012-6-28 09:28:21

借我你的一生 发表于 2012-3-25 14:35 static/image/common/back.gif
; 修改CPU总线模式
    mrc    p15, 0, r1, c1, c0, 0
    orr    r1, r1, #0xc0000000


谢谢帮忙 很久没登录了 今天才看到~~
页: [1]
查看完整版本: 裸机I/O口初始化顺序问题