历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2019年10月09日 | stm32中ADC初始化程序

2019-10-09 来源:eefocus

void  Adc_Init(void)

uint32_t tmpreg1 = 0;

ADC_InitTypeDef ADC_InitStructure; 

GPIO_InitTypeDef GPIO_InitStructure;


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_ADC1 , ENABLE );  //使能ADC1通道时钟



RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时钟不能超过14M


/* PC0 作为模拟通道输入引脚 ->ADC_IN10 */                       

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚

GPIO_Init(GPIOC, &GPIO_InitStructure); 


/* ADC初始化*/ 

//CR1寄存器设置

tmpreg1 = ADC1->CR1;

tmpreg1 &= 0xfff0feff; //adc的DUALMOD和SCAN位清零

tmpreg1 |= ((uint32_t)0x00000000); //位19:16 0000:独立模式

tmpreg1 |= ((uint32_t)0x00000000); //扫描模式设置 

ADC1->CR1 = tmpreg1; 


//CR2寄存器设置

tmpreg1 = ADC1->CR2;

tmpreg1 &= 0xfff1f7fd; //CONT、EXTSEL[2:0]清零

tmpreg1 |= (1<<20); //使用外部事件启动转换

tmpreg1 |= ((uint32_t)0x000E0000); //外部事件设置为软件触发

tmpreg1 |= ((uint32_t)0x00000000); //数据右对齐

tmpreg1 &= ~(1<<1);     //单次转换模式

ADC1->CR2 = tmpreg1;


//规则通道数量设置 1个

tmpreg1 = ADC1->SQR1;

tmpreg1 &= 0xff0fffff; 

tmpreg1 |= 0x00000000; //位19~位23 0000 代表规则转换组中只有一个通道

ADC1->SQR1 = tmpreg1;


//规则通道转换顺序   转换AD通道10

tmpreg1 = ADC1->SQR3;

tmpreg1 &= 0xffffffe0;  

tmpreg1 |= 0x0000000a;

ADC1->SQR3 = tmpreg1;


//采样时间设置

ADC1->SMPR1 &= ~(7<<0); //通道10采样时间设置,239.5周期,提高采样时间可以提高精确度  

  ADC1->SMPR1 |= 7<<0;     


//开启AD


ADC1->CR2 |= (1<<0); //开AD转换器


//AD校准


    ADC1->CR2 |= (1<<3); //复位校准

while( ADC1->CR2 & (1<<3) );

ADC1->CR2 |= (1<<2); //AD校准

while( ADC1->CR2 & (1<<2) );


}




自己以前都是库函数操作,没有独立对着参考手册在寄存器层面上编写代码。所以自己写的很艰难,中间还是参考了封装的库函数的定义。现在还只能写的代码还只是一个通道可以转换,多开了几个通道设置还是有问题。明日再继续。


自己独立写代码和做代码搬运工区别真的很大,虽然过程艰难,但是只要能做好,还是能学到很多东西。对概念的理解也会更深。




比如自己对  ! 和 ~的理解不到位。就想当然的写出了下面的程序




//等待AD转换结束


while( !(ADC1->SR) & (1<<1) );


而这种显然更合理 while(!(ADC1->SR&1<<1));


若自己只是做代码搬运工,不独立写,就不会发现概念上的误区,看书的时候也不会有那么深的体会。


所以我希望自己能够在学习的时候能够更独立。

推荐阅读

史海拾趣

FEMA Electronics Corporation公司的发展小趣事

随着全球化的加速推进,FEMA意识到要想在更广阔的市场上取得更大的发展,必须实施国际化战略。于是,公司开始积极拓展海外市场,与多个国家和地区的客户建立了合作关系。同时,FEMA还加强了与国际先进企业的技术交流和合作,不断吸收和借鉴国际先进的经验和技术。这些举措为公司的国际化发展提供了有力支持,使FEMA的产品在国际市场上赢得了更广泛的认可。

FRIWO公司的发展小趣事

FRIWO公司一直将创新视为企业发展的核心驱动力。公司不断投入研发资金,引进高端人才,致力于新技术、新产品的开发和应用。通过持续的技术创新,FRIWO在电源变换器、电源充电器、开关式电源供应器等领域取得了多项技术突破和专利成果。这些技术成果不仅提升了FRIWO产品的性能和品质,也为客户提供了更加高效、可靠的电源解决方案。

Arctic Silicon Devices公司的发展小趣事

在电子行业的发展过程中,创新合作是推动产业进步的重要动力。Arctic Silicon Devices积极与高校、科研机构等合作,共同开展技术研发和人才培养。通过共享资源、互通有无,公司不仅获得了更多的创新灵感和技术支持,还推动了整个电子行业的技术进步和产业升级。

ENPIRION公司的发展小趣事

经过数年的研发和技术积累,ENPIRION公司在2004年推出了其首款革命性的产品——将电感集成的DCDC芯片。这款产品的问世引起了业界的广泛关注,因为它极大地减小了负载点稳压所需要的PCB面积和高度,实现了最高功率密度和最小外形封装。这一创新不仅获得了EDN 2004年度全球电源IC最佳产品奖,还赢得了其他众多国际大奖,为ENPIRION公司赢得了业界的广泛认可。

Charcroft Electronics Ltd公司的发展小趣事

随着社会对环境保护和可持续发展的关注度不断提高,Charcroft Electronics Ltd公司积极履行社会责任,推动绿色生产和可持续发展。公司采用环保材料和节能技术,减少生产过程中的环境污染和资源消耗。同时,公司还积极参与社会公益事业,为社会做出贡献,展现了企业的良好形象和社会责任感。

这些故事虽然基于假设,但反映了电子行业中企业成长的一般路径和关键要素。如果您需要更具体、更详细的故事,建议您查阅Charcroft Electronics Ltd公司的官方资料、新闻报道或行业分析报告,以获取更准确的信息。

Epistar Corp公司的发展小趣事

作为一家电子产品制造企业,Epistar始终关注环保和可持续发展问题。公司积极采用环保材料和生产工艺减少污染排放和能源消耗;同时,Epistar还加强了对废旧产品的回收和处理工作以减少对环境的负面影响。这些努力不仅提升了公司的社会形象也增强了公司的市场竞争力。

问答坊 | AI 解惑

智能全数字锁相环的设计

摘要: 在FPGA片内实现全数字锁相环用途极广。本文在集成数字锁相环74297的基础上进行改进,设计了锁相状态检测电路,配合CPU对环路滤波参数进行动态智能配置,从而使锁相环快速进入锁定状态,在最短时间内正常工作并且提高输出频率的质量。 关键词 ...…

查看全部问答>

应届生不要做消费电子硬件

应届生不要做消费电子硬件。因为以后想转行人家都不给机会,工作涨不上去,以后要是离开沿海回家连工作都不好找。要做就做软件或者软硬件都做的产品吧。我想汽车电子和医疗电子还有机会吧。或者射频(不是消费电子的)。…

查看全部问答>

经验漫谈:监控摄像头的选型与应用

随着监控系统在商用民用的日渐普及,监控摄像机(监控摄像头)被广泛应用在各个领域,为社会治安保驾护航。   监控摄像头的选型   监控摄像头是整个监控系统的核心设备,选型时应根据现场环境和用户需求,慎重选择。针对我公司监控摄像头产品, ...…

查看全部问答>

开关电源电磁兼容性设计.pdf

摘要: 介绍了单片开关电源的电磁兼容性 (.5B) 设计, 内容包括对电磁干扰波形和电路模型进 行分析, 以及 .5; 滤波器的电路设计。…

查看全部问答>

有一项目,寻找开发人员

本公司有一个涉及到485通讯和蓝牙模拟串口通讯的项目,想找一位能独立画板,独立开发的人来完成。 居住地要求在南京。 电话:1 3 9 5 1 0 3 8 6 8 3…

查看全部问答>

IDE转SATA时,端口怎么初始化?

我想利用IDE转SATA和SATA转IDE 2种卡实现并/串高速数据传输! 有2个地方都是并口,40M速度,想利用IDE转SATA卡先并--串行,然后用SATA转IDE卡再把串--并行,实现近距离数据传输。实验时距离不超过30cm, 但用示波器就是看不到数据传过来。此方案若 ...…

查看全部问答>

找USB驱动开发和简单硬件开发的硬件人员

各位,我正在做一个项目,需要有经验的您参与: (1)USB驱动开发。 (2)普通电话机硬件。 (3)地点:上海 需要有丰富经验,酬金面谈,您如果需要挣外快,请和我联系:13818802872。 …

查看全部问答>

超级终端下的GPRS拨号问题

各位大哥,我在超级终端下用AT指令拨号,配置如下: AT+CGCLASS=\"B\"               OK   AT+CGDCONT=1,\"IP\",\"CMNET\"            &nbs ...…

查看全部问答>

求MSP430程序,控制DA输出,用的是MAX507芯片。

几乎是最小系统,AD输入,DA输出。 AD用片带,DA打算用max507,12位的。您有现成类似的程序,请给传一份,小弟万分感谢。初学,描述不对地方请见谅。邮箱:JL7519970@163.com…

查看全部问答>