已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32通用定时器的基本定时器功能实现灯闪烁 /* Includes -*/#include stm32f10x_lib.hErrorStatus HSEStartUpStatus;void RCC_Configuration(void);/void USART_Configuration(void);void GPIO_Configuration(void);void TIM_Configuration(void);void NVIC_Configuration(void);void delay(void);int main(void)#ifdef DEBUG debug();#endif RCC_Configuration(); GPIO_Configuration(); TIM_Configuration(); /USART_Configuration(); NVIC_Configuration(); /* Infinite loop */ while (1) if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) /* 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 line source number* Output : None* Return : None*/void RCC_Configuration(void) /*将外设RCC寄存器重设为缺省值 */ RCC_DeInit(); /*设置外部高速晶振(HSE)*/ RCC_HSEConfig(RCC_HSE_ON); /RCC_HSE_ONHSE晶振打开(ON) /*等待HSE起振*/ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /SUCCESS:HSE晶振稳定且就绪 /*设置AHB时钟(HCLK)*/ RCC_HCLKConfig(RCC_SYSCLK_Div1); /RCC_SYSCLK_Div1AHB时钟 = 系统时钟 /* 设置高速AHB时钟(PCLK2)*/ RCC_PCLK2Config(RCC_HCLK_Div1); /RCC_HCLK_Div1APB2时钟 = HCLK /*设置低速AHB时钟(PCLK1)*/ RCC_PCLK1Config(RCC_HCLK_Div2); /RCC_HCLK_Div2APB1时钟 = HCLK / 2 /*设置FLASH存储器延时时钟周期数*/ FLASH_SetLatency(FLASH_Latency_2); /FLASH_Latency_2 2延时周期 /*选择FLASH预取指缓存的模式*/ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); / 预取指缓存使能 /*设置PLL时钟源及倍频系数*/ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/ PLL的输入时钟 = HSE时钟频率;RCC_PLLMul_9PLL输入时钟x 9 /*使能PLL */ RCC_PLLCmd(ENABLE); /*检查指定的RCC标志位(PLL准备好标志)设置与否*/ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /*设置系统时钟(SYSCLK) */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/RCC_SYSCLKSource_PLLCLK选择PLL作为系统时钟 /* PLL返回用作系统时钟的时钟源*/while(RCC_GetSYSCLKSource() != 0x08) /0x08:PLL作为系统时钟 /*使能TIM3的APB1外设时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /*使能或者失能APB2外设时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOF , ENABLE); /RCC_APB2Periph_GPIOA GPIOA时钟 /RCC_APB2Periph_GPIOB GPIOB时钟 /RCC_APB2Periph_GPIOC GPIOC时钟 /RCC_APB2Periph_GPIOD GPIOD时钟/*void USART_Configuration(void) /串口初始化函数USART_InitTypeDef USART_InitStructure; /串口设置恢复默认参数USART_InitStructure.USART_BaudRate = 9600; /设置波特率=9600 USART_InitStructure.USART_WordLength = USART_WordLength_8b;/字长8位 USART_InitStructure.USART_StopBits = USART_StopBits_1;/ 1位停止字节 USART_InitStructure.USART_Parity = USART_Parity_No ; /无奇偶校验 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /无流控制USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);/接收中断使能 USART_ITConfig(USART1,USART_IT_TXE,ENABLE);/发送中断使能 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; / 打开Rx接收和Tx发送功能 USART_Init(USART1, &USART_InitStructure); / 初始化串口 USART_Cmd(USART1, ENABLE);/启动串口 */void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_Init(GPIOD, &GPIO_InitStructure);void TIM_Configuration(void) /*每1秒发生一次更新事件(进入中断服务程序)。 RCC_Configuration()的SystemInit()的RCC-CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2 表明TIM3CLK为72MHz。因此,每次进入中断服务程序间隔时间为 (1+TIM_Prescaler )/72M)*(1+TIM_Period )=(1+7199)/72M)*(1+9999)=1秒 */TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_DeInit( TIM2); TIM_TimeBaseStructure.TIM_Period =9999; / 自动重装载寄存器周期的值(定时时间) / 累计 0xFFFF个频率后产生个更新或者中断(也是说定时时间到)TIM_TimeBaseStructure.TIM_Prescaler = 7199;/时钟预分频数 例如 :时钟频率=72/(时钟预分频+1)TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/*此函数的语句TIMx-EGR = TIM_PSCReloadMode_Immediate;以软件方式产生更新事件(注:当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。 */ /TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;/TIM_SetAutoreload(TIM2, 9999);TIM_ClearFlag(TIM2, TIM_FLAG_Update); / Clear TIM2 update pending flag清除TIM2溢出中断标志 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); / Enable TIM2 Update interrupt TIM2溢出中断允许TIM_Cmd(TIM2, ENABLE);/ TIM2 enable counter 允许tim2计数/*void EXTI_Configuration(void) /连接EXTI Line0到PA.00 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); / 配置EXTI Line0产生一个下降沿中断 EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); / 连接EXTI Line9到PB.09 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9); / 配置EXTI Line9产生一个下降沿中断 EXTI_InitStructure.EXTI_Line = EXTI_Line9; EXTI_Init(&EXTI_InitStructure); */void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 矢量表设置在0x20000000基地位置 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 矢量表设置在0x08000000基地位置 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /* Enable the TIM2 global Interrupt 全局中断使能TIM2 */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);void delay(void)u32 i,j;for (i=0; i0x0fffff; i+) j +;#ifdef DEBUGvoid assert_failed(u8* file, u32 line) /* 用户可以添加自己的执行情况报告的文件名和行号,例如:printf(“请值错误的参数:文件的行d 的R N”的,文件,行) */ /* Infinite loop */ wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木制品购销合同范本
- 防伪线绳采购合同范本
- 柴油工地采购合同范本
- 基于构件的虚拟仪器开发方法:理论、实践与创新
- 2026-2031取暖电器市场分析现状
- 基于机器视觉的轮胎标识点识别方法深度剖析与创新研究
- 医院招聘医师题库及答案
- 事业单位会计题库及答案
- 陕西省咸阳市礼泉县2025-2026学年高三上学期期中考试历史试题 (含答案)
- 施工安全应急预案紧急情况的处理措施
- 创办幼儿园核心流程
- 全国大学生职业规划大赛《俄语》专业生涯发展展示
- 一级裁判笔试题库及答案
- 2026年中考地理复习新题速递之地形图的判读(2025年10月)
- 燃气管网自动化控制系统建设方案
- 2025年宠物经济消费者画像及市场潜力研究报告
- 饮料GMP基础知识培训课件
- 岩棉薄抹灰外墙外保温工程技术标准JGJT480-2019
- SA8000-2026社会责任管理体系全套管理手册及程序文件
- 人教2024版八年级英语上册1-8单元单词表(背诵版+默写版)
- 人工智能+智能金融区块链技术应用研究报告
评论
0/150
提交评论