欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    正弦波发生 频率可调.docx

    • 资源ID:12413368       资源大小:16.46KB        全文页数:11页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    正弦波发生 频率可调.docx

    1、正弦波发生 频率可调正弦波发生 频率可调 /* (C) COPYRIGHT 2019 STMicroelectronics * / /* Includes -*/ #include stm32f10x_lib.h #include math.h #include platform_config.h /* Private typedef -*/ /* Private define -*/ #define DAC_DHR12RD_Address 0x40007420 #define pi 3.*3421170679 /* Init Structure definition */ DAC_InitT

    2、ypeDef DAC_InitStructure; DMA_InitTypeDef DMA_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Private macro -*/ /* Private variables -*/ ErrorStatus HSEStartUpStatus; /* uc16 Sine12bit32 = 2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 405

    3、6, 3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909, 599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647; */ u32 DualSine12bit32; u32 sina32; u32 sinb32; int fre=19; u8 Idx = 0; u8 i; /* Private function prototypes -*/ void RCC_Configuration(void); void GPIO_Configuration(void); void N

    4、VIC_Configuration(void); void Delay(vu32 nCount); /* Private functions -*/ /* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None */ int main(void) #ifdef DEBUG debug(); #endif /* System Clocks Configuration */ RCC_Configuration(); /* GPIO configuratio

    5、n */ GPIO_Configuration(); /* NVIC Configuration */ NVIC_Configuration(); /* TIM8 Configuration */ /data format /* for (Idx= 0; Idx DualSine12bitIdx = (Sine12bitIdx */ /16 while(1) if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)=0) /如果PA0 = 0 /* Time base configuration */ TIM_TimeBaseStructInit(&TIM_Tim

    6、eBaseStructure); TIM_TimeBaseStructure.TIM_Period = fre; /数值增大1,频率减小0.1 TIM_TimeBaseStructure.TIM_Prescaler = fre; TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)=0) ; if(GPIO_ReadInputDataBit(G

    7、PIOA, GPIO_Pin_8)=0) /如果PA8 = 0 while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)=0) ; if (fre2) fre=fre-2; for(i=0;i TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); /* TIM8 TRGO selection */ TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update); /* DAC channel1 Configuration */ DAC_StructInit(&DAC_Init

    8、Structure); DAC_InitStructure.DAC_Trigger = DAC_Trigger_T8_TRGO; DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable; DAC_Init(DAC_Channel_1, &DAC_InitStructure); /* DAC channel2 Configuration */ DAC_Init(DAC_Channel_2, &DAC_I

    9、nitStructure); /* Fill Sine32bit table */ /* DMA2 channel4 configuration */ DMA_DeInit(DMA2_Channel4); /DAC 通道2 DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&sina ; / DualSine12bit DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; DMA_I

    10、nitStructure.DMA_BufferSize = 32; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitS

    11、tructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA2_Channel4, &DMA_InitStructure); /* Enable DMA2 Channel4 */ DMA_Cmd(DMA2_Channel4, ENABLE); DMA_Cmd(DMA2_Channel3, ENABLE); /* Enable DAC Channel1 */ DA

    12、C_Cmd(DAC_Channel_1, ENABLE); /* Enable DAC Channel2 */ DAC_Cmd(DAC_Channel_2, ENABLE); /* Enable DMA for DAC Channel2 */ DAC_DMACmd(DAC_Channel_2, ENABLE); sina /* TIM8 enable counter */ TIM_Cmd(TIM8, ENABLE); /* * Function Name : RCC_Configuration * Description : Configures the different system cl

    13、ocks. * Input : None * Output : None * Return : None */ void RCC_Configuration(void) /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /* Enable P

    14、refetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* PLLCLK =

    15、 8MHz * 9 = 72 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF,

    16、 ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_8; /PA0 PA8设置为输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLC

    17、LK); /* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x08) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE); /* Enable peripheral clocks -*/ /* DMA clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); /* AFIO and GPIOA Periph clock enable */ RCC_AP

    18、B2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE); /* DAC Periph clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); /* TIM8 Periph clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); /* * Function Name : GPIO_Configuration * Description : Configur

    19、es the different GPIO ports. * Input : None * Output : None * Return : None */ void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; /#if defined USE_USART2 & defined USE_STM3210E_EVAL /* Enable AFIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); /* Enable the USART2 Pins

    20、 Software Remapping */ / GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); /#endif /* Configure USARTx_Tx as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_TxPin; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOx, &GPI

    21、O_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOx, &GPIO_InitStructure); /* Configure USARTx_Rx as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructu

    22、re.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOx, &GPIO_InitStructure); /* GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitSt

    23、ructure); */ /* * Function Name : NVIC_Configuration * Description : Configures Vector Table base location. * Input : None * Output : None * Return : None */ void NVIC_Configuration(void) #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM,

    24、 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif /* * Function Name : Delay * Description : Inserts a delay time. * Input : nCount: specifies the delay time length. * Output : None * Return : None */ void De

    25、lay(vu32 nCount) for(; nCount != 0; nCount-); #ifdef DEBUG /* * Function Name : assert_failed * Description : Reports the name of the source file and the source line number * where the assert_param error has occurred. * Input : - file: pointer to the source file name * - line: assert_param error lin

    26、e source number * Output : None * Return : None */ void assert_failed(u8* file, u32 line) /* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file %s on line %drn, file, line) */ /* Infinite loop */ while (1) #endif /* (C) COPYRIGHT 2019 STMicroelectronics *END OF FILE*/


    注意事项

    本文(正弦波发生 频率可调.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开