




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* |/ - - / ( )+-oOOo-(_)-oOOo-+| 奋斗版STM32开发板试验程序 | TIM1-PWM实验 | Sun68 | 2009.12.8 | 演示通过示波器观察TIM1的1通道的PWM波形 | 奋斗STM32嵌入式开发工作室 | http:/OutSTM.5 | | QQ: 9191274 | Oooo |+-oooO-( )-+ ( ) ) / ( (_/ _) */*引脚A0、A1、A3*/* Includes -*/#include stm32f10x.h#include stm32f10x_tim.h#include stm32f10x_rcc.h#include stm32f10x_flash.h#include stm32f10x_gpio.h#include misc.h/* Private typedef -*/* Private define -*/* Private macro -*/* Private variables -*/ TIM_TimeBaseInitTypeDef TIM2_TimeBaseStructure;TIM_TimeBaseInitTypeDef TIM3_TimeBaseStructure;TIM_OCInitTypeDef TIM2_OCInitStructure;TIM_BDTRInitTypeDef TIM2_BDTRInitStructure;TIM_OCInitTypeDef TIM3_OCInitStructure;TIM_BDTRInitTypeDef TIM3_BDTRInitStructure;NVIC_InitTypeDef NVIC_InitStructure;u16 capture = 0;u16 CCR1_Val = 20 * 200 / 100;u16 CCR2_Val = 320 * 200 / 1000;u16 CCR3_Val = 20 * 200 / 100;ErrorStatus HSEStartUpStatus; /* Private function prototypes -*/void RCC_Configuration(void);void GPIO_Configuration(void);void NVIC_Configuration(void);void TIM2_Config(u16 T);void TIM2_Configuration(u16 T);void TIM3_Configuration(void); /* Private functions -*/* Function Name : main* Description : Main program* Input : None* Output : None* Return : None*/int main(void)#ifdef DEBUG debug();#endif /时钟设置 RCC_Configuration(); /GPIO设置 GPIO_Configuration(); /中断设置 NVIC_Configuration(); TIM2_Config(5);/设置定时器 /TIM3_Configuration(); while(1) /* Function Name : RCC_Configuration* Description : Configures the different system clocks.* 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) /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* PLLCLK = 8MHz * 9 = 72 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x08) /* TIM2、TIM3, GPIOA and GPIOB clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE);/* Function Name : GPIO_Configuration* Description : Configure the TIM1 Pins.* Input : None* Output : None* Return : None*/void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3|GPIO_FullRemap_TIM2, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);/* Function Name : NVIC_Configuration* Description : Configure the nested vectored interrupt controller.* 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, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endifNVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/指定中断源NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;/ 抢占式优先级别 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/指定响应优先级别NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);void TIM2_Config(u16 T)if(T = 5)TIM2_Configuration(5); /周期为5毫秒else if(T = 10)TIM2_Configuration(10);/周期为十毫秒else if(T = 20)TIM2_Configuration(20);/周期为20毫秒void TIM2_Configuration(u16 T) TIM_DeInit(TIM2);/将外设TIM2寄存器重设为缺省值 TIM_InternalClockConfig(TIM2); /设置TIM2内部时钟 /* Time Base configuration */ TIM2_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/时间分割值 TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/定时器模式 向上计数/设置周期 if(T = 5) TIM2_TimeBaseStructure.TIM_Prescaler = 1799; TIM2_TimeBaseStructure.TIM_Period = 199;else if(T = 10)TIM2_TimeBaseStructure.TIM_Prescaler = 3599; TIM2_TimeBaseStructure.TIM_Period = 199;else if(T = 20)TIM2_TimeBaseStructure.TIM_Prescaler = 7199; TIM2_TimeBaseStructure.TIM_Period = 199; TIM_TimeBaseInit(TIM2,&TIM2_TimeBaseStructure); /初始化定时器TIM_ClearFlag(TIM2, TIM_FLAG_Update);/清除TIM2的待处理标志位TIM_Cmd(TIM2,ENABLE); /打开定时器 /* Channel 1, 2,3 and 4 Configuration in PWM mode */TIM_OCStructInit(&TIM2_OCInitStructure);/设置缺省值 TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;/设置PWM模式2输出 /使能输出状态 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM2_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; /TIM输出比较极性高 TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM2_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; TIM2_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; TIM2_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; /设置占空比if(T = 5)TIM2_OCInitStructure.TIM_Pulse = CCR1_Val;else if(T = 10)TIM2_OCInitStructure.TIM_Pulse = CCR2_Val;else if(T = 20)TIM2_OCInitStructure.TIM_Pulse = CCR3_Val; /TIM2的CH2输出TIM_OC2Init(TIM2, &TIM2_OCInitStructure);TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); if(T = 5)TIM2_OCInitStructure.TIM_Pulse = CCR1_Val;else if(T = 10)TIM2_OCInitStructure.TIM_Pulse = CCR2_Val;else if(T = 20)TIM2_OCInitStructure.TIM_Pulse = CCR3_Val; TIM_OC1Init(TIM2, &TIM2_OCInitStructure);TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); if(T = 5)TIM2_OCInitStructure.TIM_Pulse = CCR1_Val;else if(T = 10)TIM2_OCInitStructure.TIM_Pulse = CCR2_Val;else if(T = 20)TIM2_OCInitStructure.TIM_Pulse = CCR3_Val; TIM_OC3Init(TIM2, &TIM2_OCInitStructure);TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); if(T = 5)TIM2_OCInitStructure.TIM_Pulse = CCR1_Val;else if(T = 10)TIM2_OCInitStructure.TIM_Pulse = CCR2_Val;else if(T = 20)TIM2_OCInitStructure.TIM_Pulse = CCR3_Val; TIM_OC4Init(TIM2, &TIM2_OCInitStructure);TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_CtrlPWMOutputs(TIM2,ENABLE);TIM_ARRPreloadConfig(TIM2, ENABLE);void TIM3_Configuration(void)TIM_DeInit(TIM3);TIM_InternalClockConfig(TIM2);/ Time Base configuration TIM3_TimeBaseStructure.TIM_Prescaler = 7199;TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM3_TimeBaseStructure.TIM_Period = 199;TIM3_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM3_TimeBaseStructure.TIM_RepetitionCounter = 0x0;TIM_TimeBaseInit(TIM3,&TIM2_TimeBaseStructure);TIM_ClearFlag(TIM3, TIM_FLAG_Update); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); / Channel 1, 2,3 and 4 Configuration in PWM mode TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM3_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM3_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; TIM3_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;TIM3_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM3_OCInitStructure.TIM_Pulse = CCR3_Val; TIM_OC1Init(TIM3,&TIM3_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);TIM3_OCInitStructure.TIM_Pulse = CCR3_Val;TIM_OC2Init(TIM3,&TIM3_OCInitStructure);TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM3_OCIn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加强学生午休管理制度
- 培训机构奖罚管理制度
- 办公系统设备管理制度
- 学校随机食堂管理制度
- 午间托管服务管理制度
- 工人私自出厂管理制度
- 小区租户登记管理制度
- 农村合同协议管理制度
- 公司夜班车间管理制度
- 小区装修工人管理制度
- 核电站钢板混凝土结构技术标准
- 《儿童健康保障课件:理性选择与购买策略》
- 校医招聘考试试题及答案
- 新能源安规试题及答案
- 中国多聚甲醛行业发展分析及投资价值预测研究报告2025-2028版
- 2O25中国商业航天创新生态报告
- 江苏省南通等六市2025届高三最后一卷英语试卷含解析
- 路桥施工作业指导书汇编
- 房建工程总承包EPC项目技术标(投标方案)(技术标)
- 《全球市场分析与发展趋势》课件
- 专利代理师考试题库含答案2024
评论
0/150
提交评论