MBD开发 STM32 ADC

目录

单次采集

dma中断多通道采集

ADC采样中断 

 利用ADC中断打印数据


单次采集

在cubemx配置好adc,和串口(阻塞)

function [nbChar,buff] = convert(u)

if coder.target('Sfun')
    buff = uint32(0);
    nbChar = uint16(0);
else
   coder.cinclude('stdio.h');
   coder.cinclude('main.h');
   coder.cinclude('getBuffPtr.h');
   
   string = char(zeros(1,20));
   stringSize = uint16(size(string,2));
   stringFormat = char(['%08x-%5.2f V',13.10,0]);
   
   tick = uint32(0);
   tick = coder.ceval('HAL_GetTick');
   %tick 08x    u 5.2f
   coder.ceval('snprintf',coder.wref(string), stringSize, coder.rref(stringFormat), tick, u)
   buff = coder.ceval('getBuffPtr',coder.wref(string));
   
   nbChar = stringSize;%其实给的多了,应该只给到0X00

   
    
end
end
    

dma中断多通道采集

 

 

 

function [nbChar,buff] = convert(u, data, data1)

if coder.target('Sfun')
    buff = uint32(0);
    nbChar = uint16(0);
else
   coder.cinclude('stdio.h');
   coder.cinclude('main.h');
   coder.cinclude('getBuffPtr.h');
   
   string = char(zeros(1,50));
   stringSize = uint16(size(string,2));
   %stringFormat = char(['%08x-%5.2f V',13.10,0]);
   stringFormat = char(['ch1:%5.2f V; ch2:%5.2f V; ch3"%5.2f',13 ,10, 0]);%有修改

   %tick = uint32(0);
   %tick = coder.ceval('HAL_GetTick');
   %tick 08x    u 5.2f
   coder.ceval('snprintf',coder.wref(string), stringSize, coder.rref(stringFormat),  u, data , data1);
   
   buff = coder.ceval('getBuffPtr',coder.wref(string));
   
   nbChar = stringSize;%其实给的多了,应该只给到0X00

   
    
end
end
    

前面的字符是因为matlab生成的代码局部变量string[50]没有做初始化导致的。

string打印的字符没问题

string数组多余的0刚好和乱码数量对应上

ADC采样中断 

关dma开it

这个指示用来触发中断

 

 

 

 利用ADC中断打印数据

function [nbChar,buff] = adc_it_msg()

if coder.target('Sfun')
    nbChar = uint16(0);
    buff = uint32(0);
else
        y = char(['ADC_IT Printf ',13,10,0]);
        buff = coder.ceval('getBuffPtr',coder.rref(y));
        nbChar = uint16(size(y,2));
end
end
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值