找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4968|回复: 4
打印 上一主题 下一主题
收起左侧

基于STM32的ADC双通道电流+电压采样源程序

  [复制链接]
跳转到指定楼层
楼主
ID:584588 发表于 2019-7-15 17:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做双向DC-DC实验的时候 需要用到STM32的ADC采样然后用PWM输出
而我采样是采两个 一个是电压 一个是电流 所以需要用到双通道
这份代码是我不用DWM实现的ADC双通道采样

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "lcd.h"
  8. #include "adc.h"
  9. #define  adcDiv100 adcx/100

  10. int main(void)
  11. {               
  12.         u16 adcx=0;
  13.         u16 adcy=0;
  14.        
  15.         u16 led0pwmval=600;
  16.         delay_init();                     //延时函数初始化          
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  18.         uart_init(115200);         //串口初始化为115200
  19.         LED_Init();                             //LED端口初始化
  20.         TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz
  21.         Adc_Init();
  22.         LCD_Init();
  23.          
  24.            while(1)
  25.         {
  26.                 adcx=Get_Adc_Average(ADC_Channel_1,50);//通道1采样50次
  27.                 LCD_ShowxNum(120,120,adcx,4,16,0);//120 120为起始点坐标 4为长度:显示的位数 16为字体大小 模式:[7]、[6:1]、[0]
  28.                 delay_ms(10);         
  29.     if(adcx>1740)//1.4
  30.                 {
  31.                         led0pwmval+=10;
  32.                         if(led0pwmval>750)
  33.                                 led0pwmval=750;
  34.                 }
  35.                 else if(adcx<980)//0.78
  36.                 {
  37.                         led0pwmval-=10;
  38.                         if(led0pwmval<300)
  39.                                 led0pwmval=300;
  40.                 }                                                                         
  41.                 TIM_SetCompare2(TIM3,led0pwmval);               
  42.           //LCD_ShowxNum(120,140,(u32)TIM3->CCR1,4,16,0);  

  43.     adcy=Get_Adc_Average2(ADC_Channel_2,50);
  44.     LCD_ShowxNum(156,230,adcy,4,16,0);//显示ADC的值
  45.                 delay_ms(10);
  46.                
  47.     if(adcy>1110)//0.9
  48.                 {        led0pwmval=899;  
  49.                                 TIM_SetCompare2(TIM3,led0pwmval);               
  50.                   break;
  51.                 }
  52.         }         
  53. }
复制代码

所有资料51hei提供下载:
双向DC-DC实验最终版.7z (225.99 KB, 下载次数: 151)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:650950 发表于 2019-11-27 17:24 | 只看该作者
我想下载但是积分不够哈哈哈

评分

参与人数 1黑币 +8 收起 理由
刀刀见红 + 8

查看全部评分

回复

使用道具 举报

板凳
ID:650950 发表于 2019-11-28 10:04 | 只看该作者
拿正点原子的例程糊弄人??
回复

使用道具 举报

地板
ID:827939 发表于 2023-4-26 00:56 | 只看该作者
可测交流电压吗
回复

使用道具 举报

5#
ID:270740 发表于 2023-6-20 15:00 | 只看该作者
抄正点原子的资料发到这里赚分
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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