新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2019-12-23
- 在线时间
- 9 小时
|
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
求大佬解答
|
|