打印

STM8&IAR,long型数据参数传递问题.

[复制链接]
2558|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fei|  楼主 | 2012-10-8 15:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fei 于 2012-10-8 16:02 编辑

最近在学模块化程序设计。用STM8S做个串口函数练手。出现问题如下
brr变量定义为U16,结果正常。定义为U32就出问题。测试定位为U32时直接赋值是正常的。就是调用函数传参数的时候出问题。函数功能很简单大致如下:

主程序main()
{
  init_IO();            //端口初始化
  init_CLK();           //系统时钟初始化
  init_UART1(9600);         //串口初始化
  while(1){UART1_SendChar(0xaa);}  
}

在另一个c文件下程序如下:
void init_UART1(U32 brr)                  
{
//brr=115200;              //这里赋值没有问题
U8 BH,BL;
U32 f_sys;  
UART1_CR2  =0x00;      //禁止发送和接收
  UART1_CR1  =0x00;      //b5=0允许uart, b2=0禁止校验
  UART1_CR3  =0x00;      //b5,b4=00,一个停止位
   BH=((f_sys/brr)>>8& 0xff);   //得高8位
  BL=((f_sys/brr)& 0xff);       //得低8位
UART1_BRR2=(BH&0xf0)|(BL&0x0f);        //  BRR2放入16位数的首尾8位
UART1_BRR1=(BH<<4)|(BL>>4);        //  BRR1放入16位数的中间8位
  UART1_CR2  =0x2c;      //b2=1允许接收,b3=1允许发送,b5=1允许产生接收
}
沙发
fei|  楼主 | 2012-10-8 17:19 | 只看该作者
问题找到了。是我的头文件没有一起修改造成的 结贴

使用特权

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

本版积分规则

fei

47

主题

286

帖子

0

粉丝