OpenEdv-开源电子网

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

USMART自己写函数出现问题

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-12-23
在线时间
9 小时
发表于 2020-3-13 20:19:55 | 显示全部楼层 |阅读模式
10金钱
我希望能在PC端对单片机的采样开关和采样率进行控制,于是想到了USMART
但是在将库函数改写为自己的函数以便调用时出现了问题,在利用库函数的时候可以正确采样,利用自己写的函数就只有0.000

我想要写这两个函数
//  ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采样时间为239.5周期
//        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采样时间为239.5周期
//  ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //使能指定的ADC1的软件转换启动功能



写成了这样
void cy_time(u8 q,u8 ch,u8 rank,u8 time)
{
  ADC1->SMPR2&=000<<(3*ch);  
        ADC1->SMPR2|=time<<(3*ch); //通道channel  239.5周期,提高采样时间可以提高精确度

  ADC1->SQR1   = 0;             // 清零  [0:0:0:0:0]
  ADC1->SQR1  |= (q-1)<<20;         // L     [23:20]   转换总数, q 个转换在规则序列中

  ADC1->SQR3 |= ch<<(5*rank);      // 通道channel 第rank个转换

  //000: 1.5周期 100: 41.5周期
  //001: 7.5周期 101: 55.5周期
  //010: 13.5周期 110: 71.5周期
  //011: 28.5周期 111: 239.5周期  
}
void kaiguan(u8 a)
{
  ADC1->CR2|=a<<22; //启动规则转换通道
}


在利用库函数的时候可以正确采样,利用自己写的函数就只有0.000
求大佬解答

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

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-12-23
在线时间
9 小时
 楼主| 发表于 2020-3-13 20:54:22 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-3-14 00:55:30 | 显示全部楼层
先写一个,看正确么?
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14409
金钱
14409
注册时间
2018-8-3
在线时间
1156 小时
发表于 2020-3-14 14:44:43 | 显示全部楼层
你先单独在代码里边 调用你说的这个函数 能不能正常工作先
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 10:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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