STM8L探索套件学习笔记-信号发生器(十四)

发布者:创意火舞最新更新时间:2015-12-21 来源: eefocus关键字:STM8L  探索套件  学习笔记  信号发生器 手机看文章 扫描二维码
随时随地手机看文章
STM8L有一个DAC通道,能够将数字信号转为模拟信号。官方范例中使用DAC和DMA、TIM4作为一个信号发生器,首先先逐个介绍下每个功能:
DMA用于提供外设与内存或者内存与内存的高速数据传递,数据能够直接由DMA移动,而无需CPU操作,这样能够使得CPU的资源可以用于其他操作。DMA控制器有4个通道,每个通道用于管理一个或者多个外设的内存访问请求。内部有仲裁管理DMA访问的优先权。由于是8位,DMA最大数据量为255。
DAC模块是12比特数模转换器电压输出,DAC能够配置为8比特或者12比特模式,能够使用DMA控制器。在12比特模式下,数据可以选择左/右对齐,在中等模式器件下有1个输出通道,在中等+和高密度器件有2个输出通道。输入内部参考电压VREF可以获得更好的角度。
DAC可以配置为软件触发和TIM4外部触发模式,我们使用TIM4外部触发模式可以方便地调整输出频率。官方例程使用寄存器操作,比较难懂。这里我们使用固件库先创建一个简单地信号发生器,能够选择生成信号的类型,并使用板上的LCD显示信号的名称。
代码如下:
void main(void)
{
  //CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//系统1分频,16M
  /* Enable Clocks of DAC, TIM4 and DMA1 */
  CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);
  CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
  LCD_GLASS_Init();
  /* DMA channel3 Config -----------------------------------------------------------------*/
  DMA_GlobalDeInit();
  DMA_DeInit(DMA1_Channel3);
  DMA_Init(DMA1_Channel3,  WavesTab[0], DAC_CH1RDHRH_ADDRESS,
           130, DMA_DIR_MemoryToPeripheral, DMA_Mode_Circular,
           DMA_MemoryIncMode_Inc, DMA_Priority_High, DMA_MemoryDataSize_HalfWord);
 
  /* DMA1 Channel 3 enable */
  DMA_Cmd(DMA1_Channel3, ENABLE);
  DMA_GlobalCmd(ENABLE);
 
  /* DAC Channel1 Config: 12bit right-----------------------------------------------------*/
  /* DAC deinitialize */
  DAC_DeInit();
  /* Fill DAC Init param DAC_Trigger_T4_TRGO and  DAC Channel1 Init */
  DAC_Init(DAC_Channel_1, DAC_Trigger_T4_TRGO, DAC_OutputBuffer_Enable);
 
 
  /* Enable DAC Channel1 */
  DAC_Cmd(DAC_Channel_1, ENABLE);
  /* Enable DMA for DAC Channel1 */
  DAC_DMACmd(DAC_Channel_1, ENABLE);
 
 
  /********* TIM4 Config ********/
  /* TIM4 Configuration */
  TIM4_DeInit();
  /* Time base configuration */
  TIM4_TimeBaseInit(TIM4_Prescaler_16, 0xFF);
  /* TIM4 TRGO selection */
  TIM4_SelectOutputTrigger(TIM4_TRGOSource_Update);
  /* TIM4 enable counter */
  TIM4_Cmd(ENABLE);
 
 
  /* Init Eval Board used Buttons*/
  GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_IT);
  //输入浮空-中断
  /* Set PC1 sensitivity to falling edge and low level 下降沿低电平触发*/
  EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling_Low);
  /* Set the EXTI1 IRQ (which is connected to key button) level to 1 */
  ITC_SetSoftwarePriority(EXTI1_IRQn, ITC_PriorityLevel_1);
  /* enable interrupts by setting level 0 */
  enableInterrupts();
  LCD_GLASS_DisplayString("TRIANG");
  BAR_ALL_OFF;
  /* Infinite loop */
  while (1)
  {
   
  }
}
关键字:STM8L  探索套件  学习笔记  信号发生器 引用地址:STM8L探索套件学习笔记-信号发生器(十四)

上一篇:STM8L探索套件学习笔记-ADC_DMA(十五)
下一篇:STM8L探索套件学习笔记-AES硬件加密(十三)

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

NI新型射频矢量信号分析仪和矢量信号发生器
新型射频模块化仪器和PXI Express 机箱为用户提供快捷灵活的无线测量功能 美国国家仪器有限公司(National Instruments,简称NI)近日推出了新型的射频矢量信号分析仪、射频矢量信号发生器和18插槽PXI Express机箱。在射频测量应用中,相比传统射频仪器,新产品将速度提升了近10倍。新型的软件定义型模块化仪器 ——NI PXIe-5663 6.6GHz射频矢量信号分析仪和NI PXIe-5673 6.6GHz射频矢量信号发生器,都将借助于NI PXIe-1075 18槽高带宽机箱发挥其性能。NI PXIe-5663能够以高达50MHz的瞬时带宽,对10MHz到6.6GHz的信号进行分析。
[测试测量]
STM32学习笔记---基于UCOSII的EXTI外部按键中断实验
继做了基于UCOSII的IWDG独立看门狗实验后,继续进行第25个实验-基于UCOSII的EXTI外部按键中断实验,此实验在基于UCOSII的IWDG实验基础上添加EXTI而来,三个按键,分别按下串口输出按键信息!在多任务下添加了IWDG独立看门狗。 //EXTI按键任务---------------------------------------- static void Task_EXTI(void* p_arg) { (void) p_arg; while(1) { //看门狗更新设置喂狗操作 IWDGSET(); TESTKEY(); OSTimeDlyHMSM(0, 0, 0, 10); }
[单片机]
STM32<font color='red'>学习</font><font color='red'>笔记</font>---基于UCOSII的EXTI外部按键中断实验
基于FPGA的DDS信号发生器设计(频率、幅度、波形可调)
工程下载地址:https://download.csdn.net/download/qq_33231534/12848911 一、DDS原理 DDS全称为直接数字频率合成(Direct Digital Synthesis),其基本原理是在一个周期波形数据下,通过选取其中全部数据或抽样部分数据组成新的波形,由奈奎斯特采样定理可知,最低两个采样点就可以组成一个波形,但实际上最少需要4个点。其原理框图如下: 其主要由相位控制字、频率控制字、相位累加器、波形存储器几部分组成。 波形存储器:存储一个周期波形的离散信号; 频率控制字:用以控制生成的波形频率。 相位累加器:用来控制波形的相位累加,组成完整的波形显示。 相
[测试测量]
基于FPGA的DDS<font color='red'>信号发生器</font>设计(频率、幅度、波形可调)
STM32学习笔记之GPIO口的使用
STM32 Cotex-M3 GPIO口简介与配置 一、GPIO口简介 1、 GPIO口输入输出模式 1.1 一般来说STM32的输入输出管脚有以下8种配置方式: 输入 ① 浮空输入_IN_FLOATING 浮空输入,可以做KEY识别 ② 带上拉输入_IPU IO内部上拉电阻输入 ③ 带下拉输入_IPD IO内部下拉电阻输入 ④ 模拟输入_AIN 应用ADC模拟输入,或者低功耗下省电 输出 ⑤ 开漏输出_OUT_OD IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。
[单片机]
STM32<font color='red'>学习</font><font color='red'>笔记</font>之GPIO口的使用
STM8L探索套件学习笔记-LCD液晶显示(三)
学习板上带有字符型LCD显示,特点是24段4位,驱动方式是复用1/4占空比,1/3基准,工作电压3V,如下图所示 我们先分析下官方给的范例关于LCD的驱动函数 void LCD_GLASS_Init(void)//使能LCD时钟,并设置相应参数 void LCD_contrast()//通过按键调节对比度 void LCD_bar()//将bar值写道LCD缓存中 static void LCD_Conv_Char_Seg(uint8_t* c,bool point,bool column, uint8_t* digit)//将ASCII码转换为LCD显示,第一个参数是要显示的字符比如 c ,第二个参数是设置POINT是否显示,第
[单片机]
基于DSP与AD9852的任意信号发生器
  直接数字式频率合成( DDS ) 技术是继直接频率合成和间接频率合成之后,随着数字集成电路和微电子技术的发展而迅速发展起来的第三代频率合成技术。DDS技术具有相对带宽宽、频率转换 时间短、频率分辨率高等优点,输出相位连续,频率、相位和幅度均可实现程控,常用于高精度频率合成和任意信号发生。本文在发动机电控单元( ECU )硬件在 环仿真系统的设计中,使用TMS320 LF2407A控制2片AD9852产生2路同步的任意信号,仿真发动机工作时的真实信号。   1 AD9852和TMS320LF2407A简介   AD9852是美国Analog Devices公司生产的新型直接数字频率合成器,具有频率转化速度快、频谱纯度高、工作温
[测试测量]
汇编入门学习笔记 (五)—— 包含多个段的程序
疯狂的暑假学习之 汇编入门学习笔记 (五) 包含多个段的程序 参考: 《汇编语言》 王爽 第6章 1.在代码中使用数据。 assume cs:code code segment dw 0123h,0456h,0789h,0defh mov ax,0 mov bx,0 mov ax,4c00H int 21h code ends end dw 表示定义字型数据,db 表示定义字节型数据。 上面代码编译连接,用debug调试,-u cs:0 查看汇编代码,发现没有看到 mov ax,0 mov bx,0 等。直接运
[单片机]
STM8学习笔记---按键KEY
用按键来控制LED灯的亮灭。按键接在PC4口,LED灯接在PD4口,LED灯由IO口高低电平控制亮灭,所以对于LED来说,IO口为输出口。按键是由外部电路来决定高低电平,假设按键未按下时默认为高电平,按键按下时为低电平。对于KEY来说,IO口为输入口,IO口要读取外部电平状态,根据电平状态来判断按键是否按下。 首先要设置IO口的状态。 端口方向寄存器, LED口要设置为输出模式, 所以PD4设置为1。按键KEY口要设置为输入模式,所以PC4设置为0。 端口控制寄存器,LED口需要输出高低电平,所以PD4口设置为1,推挽输出。 按键KEY口要读取外部电平,按键未按下时为高电平,按键按下时为低电平。所以PC4口设置为1,带
[单片机]
STM8<font color='red'>学习</font><font color='red'>笔记</font>---按键KEY
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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