搜索
bottom↓
回复: 8

s3c2440头文件的一些问题

[复制链接]

出0入0汤圆

发表于 2012-3-23 19:35:33 | 显示全部楼层 |阅读模式
自己在看国嵌视频的时候,在写裸机程序时,视频里都是直接把那些.c   .s  .h的文件直接拷到自己所创的工程目录下的(我用的是ADS1.2),那以后自己写程序的时候还是要这么拷的吗?感觉这么写心里很没底的,这些文件是要理解的呢还是说自己也能写的?

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-4-19 19:04:29 | 显示全部楼层
你自己写裸机程序时,要用到的函数或寄存器等,如果没有定义能用么?一般就定义在头文件里了。还是自己写吧,这样自己也熟悉一下

出0入0汤圆

 楼主| 发表于 2012-4-22 10:23:03 | 显示全部楼层
wgyoume 发表于 2012-4-19 19:04
你自己写裸机程序时,要用到的函数或寄存器等,如果没有定义能用么?一般就定义在头文件里了。还是自己写吧 ...

恩。。。当时是写到后来越写越虚了的。。。

出0入0汤圆

发表于 2012-4-22 17:34:38 | 显示全部楼层
chuwangmvp 发表于 2012-4-22 10:23
恩。。。当时是写到后来越写越虚了的。。。


呵呵,慢慢来吧。推荐一本书《嵌入式Linux应用开发完全手册》韦东山

出0入0汤圆

 楼主| 发表于 2012-4-23 20:55:16 | 显示全部楼层
wgyoume 发表于 2012-4-22 17:34
呵呵,慢慢来吧。推荐一本书《嵌入式Linux应用开发完全手册》韦东山

恩。。。这本买了,,,正在学习中。。。。

出0入0汤圆

发表于 2012-4-25 12:28:03 | 显示全部楼层
本帖最后由 wgyoume 于 2012-4-25 12:40 编辑

可以在网上下电子书的,不过就是不是太清晰,不过将就了。
我最近遇到一个问题,就是在对S3C2440A进行串口调试的时候,使用串口1,对他进行发送一个字符,这是可以的。源码:
#define    TXD1READY    (1 << 2)
extern void putc(char c)
{
    while(!(UTRSTAT1 & TXD1READY))
        ;
    UTXH0L = c;
}
和PC机通信,一个一个的字符发送,能正常通信
但是,如果用成这样
extern void puts(const char *str)
{
      while(*str)
         putc(*str++);
}

也就是发送字符串的时候,在PC机上接收的字符全是乱码,不知道是怎么回事。
就算是这样
char str[] = "abcdefg";
int i;
for(i = 0;i < 5;i++)
        putc(str[ i   ]  );

     一样的,在PC机上接收的数据还是全部都是乱码。很郁闷,不知道你遇到过这种问题没有


出0入0汤圆

 楼主| 发表于 2012-4-27 13:38:12 | 显示全部楼层
wgyoume 发表于 2012-4-25 12:28
可以在网上下电子书的,不过就是不是太清晰,不过将就了。
我最近遇到一个问题,就是在对S3C2440A进行串口 ...

看了下国嵌的示例,它在发送字符串的时候,用的是:
void Uart_Printf(char *fmt,...)
{
    va_list ap;
    char string[256];

    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    Uart_SendString(string);
    va_end(ap);
}
其中几个调用的函数如下:
typedef int *va_list[1];
   /*
    * an array type suitable for holding information needed by the macro va_arg
    * and the function va_end. The called function shall declare a variable
    * (referred to as ap) having type va_list. The variable ap may be passed as
    * an argument to another function.
    * Note: va_list is an array type so that when an object of that type
    * is passed as an argument it gets passed by reference.
    */


#define va_start(ap, parmN) (void)(*(ap) = __va_start(parmN))
   /*
    * The va_start macro shall be executed before any access to the unnamed
    * arguments. The parameter ap points to an object that has type va_list.
    * The va_start macro initialises ap for subsequent use by va_arg and
    * va_end. The parameter parmN is the identifier of the rightmost parameter
    * in the variable parameter list in the function definition (the one just
    * before the '...'). If the parameter parmN is declared with the register
    * storage class an error is given.
    * If parmN is a narrow type (char, short, float) an error is given in
    * strict ANSI mode, or a warning otherwise.
    * Returns: no value.
    */

void Uart_SendString(char *pt)
{
    while(*pt)
        Uart_SendByte(*pt++);
}

#define va_end(ap) ((void)(*(ap) = 0))
   /*
    * The va_end macro facilitates a normal return from the function whose
    * variable argument list was referenced by the expansion of va_start that
    * initialised the va_list ap. If the va_end macro is not invoked before
    * the return, the behaviour is undefined.
    * Returns: no value.
    */

    #ifdef __cplusplus
      }  /* extern "C" */
    #endif

    #ifdef __EDG_RUNTIME_USES_NAMESPACES
      }  /* namespace std */
    #endif
  #endif /* __STDARG_DECLS */

  #ifdef __EDG_RUNTIME_USES_NAMESPACES
    #ifndef __STDARG_NO_EXPORTS
      using std::va_list;
    #endif
  #endif

#endif


就照视频试验过次,,对于这个的解释忘了,好像是va_end(ap);va_start(ap,fmt);很重要,,,我在看看视频,再理解下再和你讨论下咯。。。

出0入0汤圆

 楼主| 发表于 2012-4-27 14:48:56 | 显示全部楼层
wgyoume 发表于 2012-4-25 12:28
可以在网上下电子书的,不过就是不是太清晰,不过将就了。
我最近遇到一个问题,就是在对S3C2440A进行串口 ...

刚弄你的代码替换申嵌的代码,还是可以的咯,暂时还不知道是个什么情况

出0入0汤圆

发表于 2012-4-27 16:10:05 | 显示全部楼层
感觉和书上说的IO重定向有一点相仿,不知道是不是。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 08:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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