找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM32 ADC控制电位计同步改变灯的亮度

[复制链接]
跳转到指定楼层
楼主
ADC__控制电位计同步改变灯的亮度



1. 开启ADC时钟和GPIO配置(模拟输入模式)
2. 中断的配置
3. PWM的配置
4. ADC配置
void adc_config()
{
    ADC_InitTypeDef ADC_InitStructure;
    ADC_DeInit(ADC1);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);                   //RCC时钟配置为72Mhz,分频为12Mhz
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;//扫描转换关闭
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//不用外部事件启动转换
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //数据对齐为右对齐
    ADC_InitStructure.ADC_NbrOfChannel = 1;//规则通道序列长度为1
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_28Cycles5);
   
   
    ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
   
    ADC_Cmd(ADC1, ENABLE);
    //复位指定的ADC1的校准寄存器
    ADC_ResetCalibration(ADC1);
    //获取ADC1复位校准寄存器的状态,设置状态则等待
    while(ADC_GetResetCalibrationStatus(ADC1))
    {
    }
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1))
    {
    }
    //配置ADC模块需注意的是需要配置adc的启动方式,这里配置为软件启动
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);        
   
}
5. ADC中断函数编写,把ADC得到的值转换设置给PWM的占空比,改变LED亮度
void ADC1_2_IRQHandler(void)
{
    u16 ADCConvertedValue;
        if(ADC_GetITStatus(ADC1,ADC_IT_EOC)!=RESET)//获取ADC中断状态
        {
            ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);//清楚中断位
            ADCConvertedValue = ADC_GetConversionValue(ADC1);//取得ADC1扫描通道得到的值
            TIM_SetCompare4(TIM2,ADCConvertedValue*4096/0xfff);//重新设置PWM的比较捕获值,即TIM_Pulse得值
        }

}
6.将PWM的引脚(我的是PA3)和LED0的PF6连起来,通过旋钮即可控制LED0亮度

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

使用道具 举报

沙发
ID:586166 发表于 2019-7-24 18:17 | 只看该作者
ADC中断函数编写可以写在那些地方呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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