STM8L探索套件学习笔记-综合应用(十八)

发布者:科技探险者最新更新时间:2015-12-21 来源: eefocus关键字:STM8L  学习笔记  综合应用 手机看文章 扫描二维码
随时随地手机看文章
今天使用到的外设比较多,有DMA,TIM1,ADC。使用ADC1的通道24即PF1采集电位器的电压,由DMA1的通道0传输到Buffer。同时由DMA1的通道2将Buffer传输到TIM1外设上,也就是TIM1_CCR1H寄存器,能够改变PWM波的占空比。我们将PWM输出端连接到板上LED3上,这样就实现了用电位器调节LED3的亮度的作用。我们转了这么大弯,但能够学到很多,下面是代码:
void main(void)
{
  //1使能时钟
  /* Enable ADC1 clock */
  CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
 
  /* Enable TIM1 clock */
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
 
  /* Enable DMA1 clock */
  CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
  //2设置ADC
  /* Initialise and configure ADC1 */
  ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_2);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
 
  /* Enable ADC1 */
  ADC_Cmd(ADC1, ENABLE);
 
  /* Enable ADC1 Channels 24 */
  ADC_ChannelCmd(ADC1, ADC_Channel_24, ENABLE); /* connected to potentiometer */
  //3设置DMA通道0连接ADC1,通道2连接TIM1
  /* Connect ADC1 to DMA1 channel 0 */
  SYSCFG_REMAPDMAChannelConfig(REMAP_DMA1Channel_ADC1ToChannel0);
  DMA_Init(DMA1_Channel0,
           BUFFER_ADDRESS,
           ADC1_DR_ADDRESS,
           BUFFER_SIZE,
           DMA_DIR_PeripheralToMemory,
           DMA_Mode_Circular,
           DMA_MemoryIncMode_Inc,
           DMA_Priority_High,
           DMA_MemoryDataSize_HalfWord);
 
  /* Connect DMA1 channel 2 to TIM1 */
  DMA_Init(DMA1_Channel2,
           BUFFER_ADDRESS,
           TIM1_CCR1_ADDRESS,
           BUFFER_SIZE,
           DMA_DIR_MemoryToPeripheral,
           DMA_Mode_Circular,
           DMA_MemoryIncMode_Inc,
           DMA_Priority_High,
           DMA_MemoryDataSize_HalfWord);
 
  /* DMA1 Channel0 enable */
  DMA_Cmd(DMA1_Channel0, ENABLE);
 
  /* DMA1 Channel2 enable */
  DMA_Cmd(DMA1_Channel2, ENABLE);
 
  /* DMA1 enable */
  DMA_GlobalCmd(ENABLE);
  //4设置TIM1 CH1输出PWM波
  /* configure TIM1 channel 1 as PWM Output */
  TIM1_OC1Init(TIM1_OCMode_PWM1,
               TIM1_OutputState_Enable,
               TIM1_OutputNState_Disable,
               0x7FF/* TIM1_Pulse */,
               TIM1_OCPolarity_Low,
               TIM1_OCNPolarity_Low,
               TIM1_OCIdleState_Reset,
               TIM1_OCNIdleState_Reset);
 
  /* Set TIM1 Autoreload value*/
  TIM1_SetAutoreload(0xFFF);
  //2M/4095=488.4HZ
  /* Enable TIM1 */
  TIM1_Cmd(ENABLE);
 
  //5 PD2 TIM1 CH1设置
  /* GPIO configuration: TIM1 channel 1 (PD2)*/
  GPIO_Init(GPIOD, GPIO_Pin_2 , GPIO_Mode_Out_PP_Low_Fast);
 
  //6 使能
  /* Enable TIM1 Outputs*/
  TIM1_CtrlPWMOutputs(ENABLE);
 
  /* Enable ADC1 DMA requests*/
  ADC_DMACmd(ADC1, ENABLE);
 
  /* Enable TIM1 DMA requests*/
  TIM1_DMACmd(TIM1_DMASource_Update, ENABLE);
 
  /* Start ADC1 Conversion using Software trigger*/
  ADC_SoftwareStartConv(ADC1);
 
  while (1)
  {}
}
关键字:STM8L  学习笔记  综合应用 引用地址:STM8L探索套件学习笔记-综合应用(十八)

上一篇:STM8L学习笔记-产品唯一身份标识(Unique Device ID) (十九)
下一篇:STM8L探索套件学习笔记-窗口看门狗WWDG(十七)

推荐阅读最新更新时间:2024-03-16 14:40

意法半导体STM8L系列超低功耗微控制器实现量产
全球领先的 微控制器 供应商意法半导体宣布STM8L系列超低功耗微控制器正式投产。新系列产品于2009年底发布,以EnergyLite技术为亮点,最大限度降低各种模式的功耗。 超低功耗微控制器符合当前高速增长的能效需求,有助于设计人员延长电池供电产品的寿命,降低智能电表、家用电器等电动设备的能耗。通常的省电技术包括睡眠模式和关断片上闲置模块,意法半导体的EnergyLite技术还可以在工作模式下节省电能,从而帮助设计人员达到“能源之星80 Plus”等能效目标,符合国际高能效电源推广计划以及待机功耗限制,如IEA的“1W节能计划”。 即日起上市的STM8L EnergyLite微控制器共有三条产品线,均采用意法半导体
[工业控制]
STM32F407中断学习笔记
中断与事件的区别 相同点:中断和事件都是触发的一种,都是可以设置触发的; 异同点: 中断触发后必须有中断处理子程序IRQ handle,例如比如按键中断触发,实现一个LED的闪烁,可以在按键按下后,在中断处理程序中实现某个LED的电平反转 但在事件中,事件是没有中断处理子程序的,事件发生后,会直接发出一个脉冲信号给与之联动的操作,也可以同样实现LED电平的反转,只要有事件发生,就会有一个脉冲信号,这样的好处是,不需要CPU干预了,可以节省CPU的处理资源,相比中断处理,速度还更快,因为硬件的速度总是比软件处理快。 EXTI 功能框图 EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所
[单片机]
STM32F407中断<font color='red'>学习</font><font color='red'>笔记</font>
综合智能卡应用系统技术方案分析
  智能卡即IC卡,它把微电子技术和计算机技术结合在一起,广泛应用于金融、交通、身份认证等领域,提高了人们生活、工作的现代化程度。智能卡在智能大厦中综合运用的程度是反映大厦智能化程度的一个重要标志。       本系统方案采用当今最先进的非接触式IC卡作为信息载体,读卡距离可达20厘米米。在读卡范围内只需轻轻一晃卡,瞬间就可完成数据交换,省去了插卡或刷卡的繁琐,方便、快捷;采用成熟的技术和产品,可靠性强;可以一卡多用,实用性强;卡和读卡机没有物理接触,故障率低;采用WINDOWS操作界面,日常管理操作简便;采用数据加密技术,安全性能高。        2 非接触式智能卡           非接触式智能卡又称射频卡,它将芯片和天线
[网络通信]
学习笔记—S3C2440的内存管理器
今天逃了一天的课用来学习S3C2440的内存管理器,这是在学习stm32的时候没有学过的,stm32增强型大容量的芯片带有FSMC(灵活的静态存储单元)用来接外部存储器,当时学的也是云里雾里,当时是要用FSMC来控制LCD显示屏,到昨天为止还有好多问题不知道如何解答,不过今天学完这一部分算是把以前关于外部存储器的疑问都解决了。首先要说说S3C2440是如何启动的,S3C2440有两种启动方式: 1.NOR启动 2.NAND启动这里只说说NAND启动方式: 上电之后NAND的前4拷贝到S3C2440内部4K的SRAM中,且设为0地址,地址从这部分开始运行 初始化内存管理器 把程序从SRAM复制到SDRAM继续执行 再来说
[单片机]
MSP430学习笔记
一、MSP430的时钟应用指南 4.5 低功耗模块头文件定义 在msp430x16x. h 对低功耗宏定义如下所示: 在intrinsics.h 对低功耗宏定义如下所示: #define __low_power_mode_0() (__bis_SR_register( __SR_GIE | __SR_CPU_OFF)) #define __low_power_mode_1() (__bis_SR_register( __SR_GIE| __SR_CPU_OFF | __SR_SCG0)) #define __low_power_mode_2() (__bis_SR_register( __SR_GIE| __SR_
[单片机]
C51单片机学习笔记(二)——花样流水灯的实现
1.单片机引脚、晶振、复位的作用 复位电路:,复位是单片机的初始化操作。单片机启动时都需要先付薇,其作用是“清零”,也就是CPU和其他部件处于一个确定的初始状态,并从这个初始状态开始。 复位实质上是单片机的复位脚保持很短时间的高电平,按键复位就是通过按键接高电平(按一下的时间已经足够) 时钟电路(晶振):产生时间信号,使单片机按照一定的时间规律进行指令,晶振频率越高,时钟信号的周期就小,单片机运行也就越快。 32个I/O口 P1.0 ~ P1.7 对应1 ~ 8 号引脚 P2.0 ~ P2.7 对应21 ~ 28 号引脚 P3.0 ~ P3.7 对应10 ~ 17 号引脚 P0.0 ~ P0.7 对应39
[单片机]
C51单片机<font color='red'>学习</font><font color='red'>笔记</font>(二)——花样流水灯的实现
LPC2478时钟系统学习笔记
LPC2478芯片有 the Main Oscillator, the Internal RC Oscillator, and the RTC oscillator三个独立的时钟系统。下面分别介绍三者: 上电或任何复位发生时,lpc2478将the Internal RC Oscillator作为时钟源。此后用户程序(软件)选择是否选用其它两个时钟源。 对于lpc2478来说,其外部时钟在1MZ-24MZ之间。the Main Oscillator可以作为CPU的时钟源,也可以作为或不作为PLL的时钟源。 The oscillator(晶振) output is called oscclk。在使用
[单片机]
FLASH调试_HCS12学习笔记(7)
在无数次询问以及查询后,终于把FLASH的问题搞清楚了,原来无论单片机的FLASH分页与否,程序都是写在FLASH上的,所以,当我调用PPAGE寄存器的时候,改变了FLASH的页面,也就是说存储在FLASH上的程序就读不到了,因此,这个时候出于保护,PPAGE寄存器是无法被改变的,所以,我把读写PPAGE的程序放到RAM中去,于是问题解决,这里附上,读写PPAGE寄存器的程序,以作笔记。 #pragma CODE_SEG FLASH_RAM //FLASH_RAM 是RAM上的段,自己定义的,详见PRM文件 void Flash_Page(INT16U w_data, INT8U page, IN
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved