打印

LM3S9B92

[复制链接]
1688|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiachu|  楼主 | 2013-11-15 15:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#define PINS GPIO_PIN_6
void delay(int d)
{
        for(;d;--d);
}
void SysCtlClockSet(unsigned long ulConfig)
{}

void   SysCtlPeripheralEnable (unsigned long ulPeripheral)
{}

void GPIODirModeSet(unsigned long ulPort,unsigned char ucPins,unsigned long ulPinIO)
{}

void GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)
{}

int main(void)
{
        unsigned int i;

          SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ);//直接使用外部晶振
          SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能GPIO的PB模块
          GPIODirModeSet(GPIO_PORTB_BASE,PINS,GPIO_DIR_MODE_OUT);//设置PB6输出
          for(i=0;i<10;i++)
          {
                  GPIOPinWrite(GPIO_PORTB_BASE,PINS,~PINS);//置PB6低电平
                  delay(20000);
                  GPIOPinWrite(GPIO_PORTB_BASE,PINS,PINS);//置PB6高电平
                  delay(20000);
          }
          SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ);//使用PLL
          for(i=0;i<10;i++)
          {GPIOPinWrite(GPIO_PORTB_BASE,PINS,~PINS);
          delay(20000);
          GPIOPinWrite(GPIO_PORTB_BASE,PINS,PINS);
          delay(20000);
          }

          return 0;

}
用的CCSV5 单步执行能执行,但是发现相应的管脚寄存器数据不改变一直是0xBAD0BAD0  而且没有使能的GPIO A C D模块能看到数据~按理说我没有使能的模块 应该显示 cant read   求指导
向0x20000000写入数据时  数据能正确写入

相关帖子

沙发
dirtwillfly| | 2013-11-19 16:18 | 只看该作者
楼主能截个图传上来看看嘛?
0xBAD0BAD0是哪个管脚寄存器的数值?

使用特权

评论回复
板凳
dirtwillfly| | 2013-11-19 16:38 | 只看该作者
用GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 1)和GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0)这两句试试

使用特权

评论回复
地板
xiachu|  楼主 | 2013-11-19 17:14 | 只看该作者
谢谢版主

(D%Y4JFA(M%}(TKQNS9OREO.jpg (289.05 KB )

(D%Y4JFA(M%}(TKQNS9OREO.jpg

使用特权

评论回复
5
dirtwillfly| | 2013-11-19 17:41 | 只看该作者
是不是没使能APB或者AHB的原因?

使用特权

评论回复
6
xiachu|  楼主 | 2013-11-19 20:16 | 只看该作者
dirtwillfly 发表于 2013-11-19 16:38
用GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 1)和GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0)这两句试 ...


我试了还是不行,不过谢谢版主回复。我继续寻找答案,找到后我会马上告诉大家

使用特权

评论回复
7
xiachu|  楼主 | 2013-11-19 20:19 | 只看该作者
dirtwillfly 发表于 2013-11-19 17:41
是不是没使能APB或者AHB的原因?

这个我没试,版主能具体一下吗?麻烦了,我只是使能了GPIOB模块  然后设置为输出  就置高置低  其他的不是大懂呢

使用特权

评论回复
8
dirtwillfly| | 2013-11-19 20:27 | 只看该作者
内核是通过总线和外设连接在一起的

使用特权

评论回复
9
xiachu|  楼主 | 2013-11-19 20:34 | 只看该作者
dirtwillfly 发表于 2013-11-19 20:27
内核是通过总线和外设连接在一起的

谢谢版主热心回复 我再试一下

使用特权

评论回复
10
xiachu|  楼主 | 2013-11-19 20:50 | 只看该作者
dirtwillfly 发表于 2013-11-19 20:27
内核是通过总线和外设连接在一起的

我看一般的例程 都没有提到使能AHB  APB  我觉得应该使能GPIO  然后设置为输出好像就可以了

使用特权

评论回复
11
dirtwillfly| | 2013-11-19 21:25 | 只看该作者
奇怪的问题。
你单步调试的时候,点那个刷新试试了吗?有时寄存器串口会更新不及时

使用特权

评论回复
12
xiachu|  楼主 | 2013-11-19 21:48 | 只看该作者
dirtwillfly 发表于 2013-11-19 21:25
奇怪的问题。
你单步调试的时候,点那个刷新试试了吗?有时寄存器串口会更新不及时
...

点了 点了  我也不知道这是什么情况用HWREG(0x200000000)能写入数据  但是向HWREG(0x400000000)不能写入  因为后者是向GPIO写入 而我没有使能所以写入不成功,我使能之后依然不能写入。我继续需找答案~~~

使用特权

评论回复
13
xiachu|  楼主 | 2013-11-20 16:24 | 只看该作者
dirtwillfly 发表于 2013-11-19 20:27
内核是通过总线和外设连接在一起的

您好,谢谢您的回复。我用HWREG(0x400FE000)=0x2//使能GPIOB模块

确实能正确执行,是不是说明我调用的头文件中没有包含GPIOPinWrite函数 ?那我改怎么改进一下呢  使能函数  配置输入输出函数单步执行都不改变, 我也包含了该包含的  头文件了?不清楚为什么还是出现这个问题?

使用特权

评论回复
14
dirtwillfly| | 2013-11-20 16:50 | 只看该作者
xiachu 发表于 2013-11-20 16:24
您好,谢谢您的回复。我用HWREG(0x400FE000)=0x2//使能GPIOB模块

确实能正确执行,是不是说明我调用的 ...

一般GPIO相关的API都在src/gpio.c中

使用特权

评论回复
15
二月寒风| | 2013-11-28 21:36 | 只看该作者
别整了,上TM4C吧,整好了估计买不到了

使用特权

评论回复
16
xiachu|  楼主 | 2013-12-3 15:04 | 只看该作者
二月寒风 发表于 2013-11-28 21:36
别整了,上TM4C吧,整好了估计买不到了

没办法,导师让弄咱们就弄呗

使用特权

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

本版积分规则

27

主题

90

帖子

1

粉丝