OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7473|回复: 2

奇怪 的 函数参数传递问题

[复制链接]

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2012-11-29 11:06:22 | 显示全部楼层 |阅读模式
我  用的 Keil编译器 芯片STM32F103RE,  遇见一个非常奇怪的问题:

定义函数  void PWM_Config( u32 chn, const u32 freq, const float pul, const u16 cntmode, bool en);
//chn: 通道 1~4 freq : 输出频率 pul 占空比 cntmode: 计数模式, en:使能

现象: 函数参数 freq 传递不进去, 执行到这步,就死机了 。如果把 freq 在函数体内 换成 具体数值 就 正常了。

请问诸位高人是什么原因呢? 是否编译器问题?


主函数调用如下:
TIM8->WM_Config( 1, 50000, 0.2, TIMType::Up, true) ;

函数实现如下 :
void TIMType:WM_Config( u32 chn, const u32 freq, const float pul, const u16 cntmode, bool en)
{

u32 clk=0;
if ((this == (TIMType*)TIM1_BASE) || (this == (TIMType*)TIM8_BASE))
clk = TIM1Clock ;
else
clk = TIMXClock ;

chn = chn - 1;

//u32 t = clk/freq;       //有问题 ,死机
u32 t = clk/50000;      //没问题 波形输出都正常

 
u16 psc = (u16)( t>>16 );
u16 arr = t /(psc+1) -1 ;

PSC = psc ;
ARR = arr ;

        u16 ccr =   (u16)((float)arr * pul) ;
switch(chn)
{
case 0: CCR1 =ccr; CCMR1 = CCMR1 & 0xff00 | (6<<4) |(1<<3) ; break;
case 1: CCR2 =ccr; CCMR1 = CCMR1 & 0x00ff | (6<<12)|(1<<11); break;
case 2: CCR3 =ccr; CCMR2 = CCMR2 & 0xff00 | (6<<4) |(1<<3) ; break;
case 3: CCR4 =ccr; CCMR2 = CCMR2 & 0x00ff | (6<<12)|(1<<11); break;
}

CR1 = CR1 & 0x08F | cntmode | (1<<7) ;
CCMR1 = CCMR1 & 0xff00 | (7<<4) |(1<<3) ;
CCER |= 0x1 << (chn<<2) ;

PWMEnable(en);
Enable(en);

}

注: 软件仿真是正常的 值算的都对

但是下到单片机(
--用的 是 IAP )里面就死机了……………………


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-11-29 12:49:02 | 显示全部楼层
在函数里面用串口发送 freq 的数值看看是什么内容
https://github.com/roxma
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
 楼主| 发表于 2012-11-29 13:13:25 | 显示全部楼层
那 包含关系就 乱了,  这个是顶层的 …… 

我用引用 传递回去参数, 结果 这个函数没执行完 也发布出去
软件调试 可以, 最后得到 ARR 和 PSC 的值都计算正常。

我的编译器优化 是默认的,……  换了好像也不行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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