stm32定时器2输出10KHZ波形

发布者:sedsedq最新更新时间:2015-09-21 来源: eefocus关键字:stm32  定时器2  波形 手机看文章 扫描二维码
随时随地手机看文章
紧接上一篇文章

/*! @function
********************************************************************************


º¯ÊýÃû   :RCC_Configuration
¹¦ÄÜ     :ʱÖÓÅäÖÃ
----------------------------------------------------------------------------------
²ÎÊý     :ÎÞ
·µ»ØÖµ   :ÎÞ
---------------------------------------------------------------------------------
ʹÓõÄÈ«¾Ö±äÁ¿£ºÎÞ
----------------------------------------------------------------------------------
×÷Õß     :           
ʱ¼ä     : 2012/10/17

*******************************************************************************/
static void RCC_Configuration(void)

 ErrorStatus HSEStartUpStatus; 

    RCC_ClocksTypeDef RccClocks;    
     
   RCC_DeInit();     
   RCC_HSEConfig(RCC_HSE_ON);  
   HSEStartUpStatus = RCC_WaitForHSEStartUp();  

   if(HSEStartUpStatus == SUCCESS)        
   {   
        /* Ñ¡ÔñHCLK£¨AHB£©Ê±ÖÓԴΪSYSCLK  1·ÖƵ */
     RCC_HCLKConfig(RCC_SYSCLK_Div1); 
           
     /* Ñ¡ÔñPCLK2ʱÖÓԴΪ HCLK£¨AHB£© 1·ÖƵ */
     RCC_PCLK2Config(RCC_HCLK_Div1); 
              
     /* Ñ¡ÔñPCLK1ʱÖÓԴΪ HCLK£¨AHB£© 2·ÖƵ */
     RCC_PCLK1Config(RCC_HCLK_Div2);     
     
        /* ÉèÖÃFLASHÑÓʱÖÜÆÚÊýΪ2 */
     FLASH_SetLatency(FLASH_Latency_2);     
     
        /* ʹÄÜFLASHԤȡ»º´æ */
     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  
     
        /* Ñ¡ÔñËøÏà»·£¨PLL£©Ê±ÖÓԴΪHSE 1·ÖƵ£¬±¶ÆµÊýΪ9£¬ÔòPLLÊä³öƵÂÊΪ 8MHz * 9 = 72MHz */
     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  
     
        /* ʹÄÜPLL */
     RCC_PLLCmd(ENABLE); 
              
     /* µÈ´ýPLLÊä³öÎȶ¨ */
     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); 
     /* Ñ¡ÔñSYSCLKʱÖÓԴΪPLL */
     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 

     /* µÈ´ýPLL³ÉΪSYSCLKʱÖÓÔ´ */
     while(RCC_GetSYSCLKSource() != 0x08);  
   }
    
    /* ÅäÖÃSysTick */ 
    RCC_GetClocksFreq(&RccClocks);  
    //SysTick_Config(RccClocks.HCLK_Frequency / OS_TICKS_PER_SEC);  
    
    /* ´ò¿ªGPIOʱÖÓ */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                        RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE,
                        ENABLE); 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
}                                    

/*! @function
********************************************************************************


º¯ÊýÃû   :NVIC_Configuration
¹¦ÄÜ     :ÖжϿØÖÆÆ÷ÅäÖÃ
----------------------------------------------------------------------------------
²ÎÊý     :ÎÞ
·µ»ØÖµ   :ÎÞ
---------------------------------------------------------------------------------
ʹÓõÄÈ«¾Ö±äÁ¿£ºÎÞ
----------------------------------------------------------------------------------
×÷Õß     :           
ʱ¼ä     : 2012/10/17

*******************************************************************************/
static void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
         
#ifdef  VECT_TAB_RAM  
 /* Set the Vector Table base location at 0x20000000 */ 
 NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else  /* VECT_TAB_FLASH  */
 /* Set the Vector Table base location at 0x08000000 */ 
 NVIC_SetVectorTable(NVIC_VectTab_FLASH  , 0);   
#endif
 /* Configure one bit for preemption priority */
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 
 
    /* Enable the USART1 Interrupt */ 
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);

 /* Enable the USART2 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
    
    /* Enable the USART3 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);  
  /* Enable the TIMER3 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);
  /* Enable the TIMER3 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);      
}

//72M timer2 
//ÖжÏʱ¼ä£º£¨720*10£©/72000000=0.1Ms=10K
void Timer2_config() //ucosiiʱÖÓ
 {
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

TIM_TimeBaseStructure.TIM_Prescaler = 360-1; //36M/360=100K HZ
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //ÏòÉϼÆÊý
TIM_TimeBaseStructure.TIM_Period = 10;       // ;   //×°ÔØֵѡÔñ 10K
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
//TIM_TimeBaseStructure.TIM_RepetitionCounter = 4;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 
  TIM_ITConfig(TIM2,TIM_IT_Update|TIM_IT_Trigger,ENABLE);
  TIM_Cmd(TIM2, ENABLE);
 }

 

void TIM2_IRQHandler(void)
{

if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´ 
 {
 
   if(Ledflg==0)
  {
    GPIO_SetBits(GPIOC, GPIO_Pin_6);
   GPIO_SetBits(GPIOC, GPIO_Pin_7);
    Ledflg=1;
  }
  else
  {
  GPIO_ResetBits(GPIOC, GPIO_Pin_6);
   GPIO_ResetBits(GPIOC, GPIO_Pin_7);
   Ledflg=0;
  }
  Ledcnt=0;

 } 
TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´ 
                        
}

关键字:stm32  定时器2  波形 引用地址:stm32定时器2输出10KHZ波形

上一篇:关于stm32的定时器的运用配置
下一篇:单片机画曲线

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

stm32f2xx与stm32f10x在正交编码器应用定时器初始化中的区别
注意: 如果stm32f2xx系列上面的网址的代码要做适当修改。 以下说重点:stm32f2xx系列,在调试中对GPIO的初始化,切记选择GPIO_Mode_AF模式,即端口复用。 随后,要做端口映射处理,即调用:GPIO_PinAFConfig()函数。 这2个方式不选择,timer是不会有反应的 本人是stm32f207,花了4天惨痛代价。 以下贴代码: /* Private define ------------------------------------------------------------*/ #define ENCODER_TIMER TIM3 //
[单片机]
STM32中学到的工程建立方法
这阵子通过STM32的学习,学到的不仅仅是硬件的知识,关于工程的结构也学到了一些实用的东西。以前学习51的时候就是一个文件写到底,把所有的函数写到一个c文件中,所有的变量也定义在一个c文件中。 但是这阵子接触到了模块化的思想,每一个外设,对应着一个单独的驱动程序,包括一个c文件还有一个h文件。在建立工程之后,先建立组,包括USER,可以把主文件放在这个组里面;SYSTEM组,可以吧系统的一些通用型文件放在这个组里面;HARDWEAR组,可以把外设放在这个组里面。还可以建立一个组放说明性的文件。这样使得整个工程的结构十分的清晰,在调试程序的时候十分方便,在以后自己重新看这个工程的时候也可以很快的理清整个工程个脉络。 在
[单片机]
STM32控制GPIO讲解
一。GPIO简介 STM32的IO口有8中配置方式: 输入 浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 带上拉输入GPIO_IPU——IO内部上拉电阻输入 带下拉输入GPIO_IPD—— IO内部下拉电阻输入 模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电 输出 开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。 推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的 复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA) 复用功能的开
[单片机]
USB之STM32基础
本篇笔记主要介绍 STM32 相关的知识点,毕竟之后的 CDC 教程是用 STM32 开发的。 为了写这一篇,鱼鹰把 STM32 中文参考手册 USB 相关的从头到尾看了一遍,虽然以前就已经看过了,但这次看,收获又是不同。 不过限于篇幅,鱼鹰不会面面俱到,只介绍和 CDC 相关的一些东西。 要完成 USB 模拟串口(CDC)的实验,STM32 手册是必须细细阅读的,不然代码里面很多操作你是无法看懂的。 其实理解了前面的一些东西,你会发现 STM32 中的 USB 知识和前面的大同小异,毕竟开发芯片的厂家也是按照 USB 标准来实现的,不会差到哪里去。 硬件基础 首先,STM32F103 使用 PA11(USBDM,D-)和 PA1
[单片机]
STM32学习第二课——(操作)按键控制LED灯
对于按键控制LED灯这一课,首先要看小黑板的原理图如下所示 查看可知KEY0按键对应的IO口是PC1,KEY1按键所对应的IO口是PC13。这样就可以操作写代码了吗?不不不,在写代码之前必须要清楚自己要干什么,要实现一个什么样的功能,还有程序的基本流程图等等以下是代码部分: //FUNCTION:按键所对应的IO口初始化 //DATA:20180914 void key_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIO的时
[单片机]
<font color='red'>STM32</font>学习第二课——(操作)按键控制LED灯
STM32要使用JTMS(PA13)、 JTCK(PA14)作为普通I/O口
在STM32要使用JTMS(PA13)、 JTCK(PA14)作为普通I/O口的时候,要在初始化前添加如下代码(顺序不能颠倒): RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE); 如: void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABL
[单片机]
stm32系统时钟配置问题
系统从上电复位到72mz配置好之前,提供时钟的是内如高速rc振荡器提供8MZ的频率,这个由下面void SystemInit (void)函数的前面的一部分代码来完成的和保证的: RCC- CR |= (uint32_t)0x00000001; #ifndef STM32F10X_CL RCC- CFGR &= (uint32_t)0xF8FF0000; #else RCC- CFGR &= (uint32_t)0xF0FF0000; #endif RCC- CR &= (uint32_t)0xFEF6FFFF; RCC- CR &= (uint32_t)0xFFFBFFFF;
[单片机]
STM32 DMA 知识讲解
DMA,全称为:DirectMemoryAccess,即直接存储器访问,DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA传输对于高效能嵌入式系统算法和网络是很重要的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。DMA是个非常好的功能,它不但能减轻CPU负担,还能提高数据传输速度. STM32最
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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