历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2018年09月16日 | STM32之通用定时器计数器模式

2018-09-16 来源:eefocus

#include "stm32f10x.h"

/* RCC时钟配置 */
void RCC_config()

 ErrorStatus HSEStartUpStatus;

 /* RCC寄存器设置为默认配置 */
 RCC_DeInit();
 /* 打开外部高速时钟 */
 RCC_HSEConfig(RCC_HSE_ON);
 /* 等待外部高速时钟稳定 */
 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代码延时 */
//  FLASH_SetLatency(FLASH_Latency_2);
//  /* 使能预取址缓存 */
//  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
  /* 设置PLL时钟源为HSE倍频9 72MHz */
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  /* 使能PLL */
  RCC_PLLCmd(ENABLE);
  /* 等待PLL稳定 */
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  /* 设置PLL为系统时钟源 */
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  /* 等待系统时钟源切换到PLL */
  while(RCC_GetSYSCLKSource() != 0x08);
 }
}

/* GPIO配置 */
void GPIO_config()
{
 GPIO_InitTypeDef GPIO_InitStructure;
 
 /* 使能GPIOC时钟 */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
 
 /* 将GPIOC时钟设置为默认参数 */
 GPIO_DeInit(GPIOC); 
 /* 推挽输出 */
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 /* 第13引脚 */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
 /* 输出频率50MHz */
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 /* 初始化GPIOC_13 */
 GPIO_Init(GPIOC, &GPIO_InitStructure);
}

/* 定时器配置 */
void TIMER_config()
{
 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
 
 /* 允许TIM2的时钟 */
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
 
 /* 将定时器2寄存器设为初始值 */
 TIM_DeInit(TIM2);
 
 /* 设置定时器2由内部时钟 */
 TIM_InternalClockConfig(TIM2);
 
 /* 预分频值 */
 TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1;
 /* 时钟分割 */
 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
 /* 向上计数 */
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 /* 自动重载值 */
 TIM_TimeBaseStructure.TIM_Period = 2000 - 1;
 /* 初始化定时器2 */
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 
 /* 清除溢出中断标志 */
 TIM_ClearFlag(TIM2, TIM_FLAG_Update);
 
 /* 禁止ARR预装载缓冲器 */
 TIM_ARRPreloadConfig(TIM2, DISABLE);
 
 /* 开启TIM2的中断 */
 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
 
 /* 开启定时器2 */
 TIM_Cmd(TIM2, ENABLE);
}

/* 中断配置 */
void NVIC_config()
{
 NVIC_InitTypeDef NVIC_InitStructure;
 
 /* 选择中断分组1 */
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 
 /* 选择TIM2的中断通道 */
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
 /* 抢占式中断优先级设置为0 */
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
 /* 响应式中断优先级设置为0 */
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 /* 使能中断 */
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 /* 中断初始化 */
 NVIC_Init(&NVIC_InitStructure);
}

/* 毫秒延时 */
void delay_ms(uint16_t time)
{    
 uint16_t i = 0;

 while(time--)
 {
  i = 12000;
  while(i--);
 }
}

/* 定时器2中断向量 */
void TIM2_IRQHandler(void)
{
 static uint8_t value = 0;

 /* 定时器2溢出标志位 */
 if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
 {
  /* 定时器2清除溢出标志位 */
  TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);

  if(value == 0)
  {
   GPIO_SetBits(GPIOC, GPIO_Pin_13);
   value = 1;
  }
  else
  {
   GPIO_ResetBits(GPIOC, GPIO_Pin_13);
   value = 0;
  }
 }
}

int main()
{
 /* 时钟配置 */
 RCC_config();

 /* 中断配置*/
 NVIC_config();

 /* 定时器2配置 */
 TIMER_config();

 /* GPIO配置 */
 GPIO_config();

 while(1)
 {
  delay_ms(1000);
 }
}


推荐阅读

史海拾趣

Hi-Optel Technologly Co Ltd公司的发展小趣事

Hi-Optel Technologly Co Ltd在电子行业中的五个发展故事

故事一:创立与初期发展

Hi-Optel Technologly Co Ltd(以下简称Hi-Optel)成立于1999年,由国有大型上市公司和国内著名风险投资机构共同投资,注册资本高达1亿美元。公司自创立之初便专注于光纤通信领域的模块开发、制造和营销。初期,Hi-Optel面临着技术挑战和市场开拓的双重压力,但凭借其强大的研发实力和敏锐的市场洞察力,逐步在光纤收发器、TO-CAN等关键产品的研发上取得突破,为后续的快速发展奠定了坚实基础。

故事二:技术创新与产品线拓展

随着技术的不断进步,Hi-Optel持续加大研发投入,不断推出新产品以满足市场需求。公司不仅拥有从TO-CAN到光纤收发器等完整产品的研发、生产和处理能力,还涵盖了不同速率和不同封装传输和数据通信的主动模块。这些产品广泛应用于SONET、以太网、FTTx、LTE和IDC光纤传输/接入系统,极大地提升了公司在行业内的竞争力。同时,Hi-Optel还积极拓展产品线,将业务范围延伸至更广泛的电子通信领域。

故事三:市场拓展与品牌建设

在市场拓展方面,Hi-Optel采取了多种策略以扩大市场份额。公司积极参加国内外各类电子通信展会,展示其最新技术和产品,吸引了众多客户和合作伙伴的关注。同时,Hi-Optel还注重品牌建设,通过提升产品质量和服务水平,赢得了客户的广泛好评。此外,公司还建立了完善的销售网络和售后服务体系,为客户提供全方位的支持和服务。

故事四:供应链优化与成本控制

为了应对激烈的市场竞争,Hi-Optel不断优化供应链管理,降低生产成本。公司与多家优质供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量的可靠性。同时,Hi-Optel还通过引入先进的生产设备和工艺,提高生产效率和产品质量,进一步降低了生产成本。这些措施不仅增强了公司的市场竞争力,还为公司的可持续发展提供了有力保障。

故事五:国际化战略与全球化布局

随着全球化进程的加速,Hi-Optel积极实施国际化战略,拓展海外市场。公司成立了多个海外分支机构,并在多个国家和地区建立了销售网络和售后服务体系。通过与国际知名企业的合作与交流,Hi-Optel不断提升自身的技术水平和品牌影响力。同时,公司还积极参与国际标准和规范的制定工作,推动行业技术的进步和发展。这些努力使得Hi-Optel在全球电子通信领域的影响力日益增强。

EPC公司的发展小趣事

某EPC公司在电子行业中以技术创新为核心竞争力。在早期阶段,公司专注于研发高效的电子制造技术和工艺,通过不断的技术突破,成功降低了生产成本,提高了产品质量。随着技术的不断成熟和应用,公司逐渐在行业内树立了技术领先的形象,吸引了众多客户的合作。通过与知名企业的合作,公司不断拓展市场份额,实现了快速发展。

EM Devices Corporation公司的发展小趣事

作为一家有社会责任感的企业,EM Devices Corporation不仅关注自身的经济效益,还积极履行社会责任。公司严格遵守环保法规,采取了一系列环保措施,减少生产过程中的污染排放。此外,公司还积极参与公益事业,为社会做出了积极的贡献。这种可持续发展的理念为公司赢得了广泛的社会赞誉和尊重。

捷茂微(GATEMODE)公司的发展小趣事

在产品研发取得突破的同时,EM Devices Corporation也积极拓展市场,寻求与国际企业的合作。公司参加了多个国际电子展,展示了自己的产品和技术实力。通过与国外企业的交流与合作,公司不仅获得了更多的市场机会,还学习到了先进的生产和管理经验。这些经验为公司后续的发展奠定了坚实的基础。

Gigabit Logic Inc公司的发展小趣事
部分设计还可以实现模拟自然风等功能,提升用户体验。
德尔创(Dersonic)公司的发展小趣事

随着业务的逐步扩展,德尔创意识到品质对于品牌的重要性。因此,公司投入大量资金用于提升生产设备的精度和稳定性,同时加强了对原材料采购和质量控制的管理。这些措施使得德尔创的产品质量得到了显著提升,客户满意度也大幅提高。此外,公司还积极开展品牌宣传活动,通过参加行业展会、举办技术交流会等方式提升品牌知名度和影响力。

问答坊 | AI 解惑

有用过Android的朋友吗,该怎么学

如题。Android挺火的,不知道如何入手。请教了…

查看全部问答>

找到一个EAGLE的使用窍门

我发现一个窍门,在EAGLE的原理图编辑器或者PCB编辑器的命令框输入Run Designlink,就会弹出一个产品搜索工具,可以输入产品编号来搜索你要的产品有没有货,价格好多等等信息。但是可惜不能通过双击搜到的产品来直接在电路图中放元件,如果有这个功 ...…

查看全部问答>

负的AVss怎么处理?

我用dsPIC30F2012做一个A/D转换,正参考电压接在Vref+上,负参考电压接在Vref-上,VCC经过滤波后接在了AVDD上,现在AVss不知如何处理,因为要求转换的电压是有负电压的,我能不能直接将AVss接地。A/D转换的参考电压选用的是Vref+和Vref-。请前辈高 ...…

查看全部问答>

请问mpc860cpu 狗复位的等待时间是多少

请问mpc860cpu 狗复位的等待时间是多少,如何配置这个时间…

查看全部问答>

VS2005新建CE6.0工程的问题

file -> new -> project -> platform builder for ce 6.0 输入工程名后,点击OK windows embedded ce 6.0 os design winzard next  -> 选中一个BSP后点击next -> 选中 PDA device后点击next  -> 一路next下去后,最后点击f ...…

查看全部问答>

开发一个PDA问题

  要开发一个PDA   的应用程序,这PDA支持   Windows   Mobile   5.0   用 vs2005  ,只能用   vc.net     吗?     vb ...…

查看全部问答>

STM8S的硬SPI通不过

选择HSI做为主时钟,16MHz void CLK_Init(void) {     CLK_DeInit();     CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); } //SPI初始化 void SPI_MyInit(void) {     SPI_DeInit();     ...…

查看全部问答>

求xilinx高手指点

 刚开始学xilinx,现在有很大问题解决不了,求高手指点,能不能留个QQ,在论坛里交流不方便,贴图很麻烦。QQ:707587938谢谢 …

查看全部问答>

【问TI】LM3S系列IQmath如何使用?

以前编程序,用到数学公式中的三角函数,开方函数..公式的时候,自己使用泰勒展开并取到5阶.以前的IQmath用在DSP上比较多,许多的使用文档都是基于TMS320F281xx处理器的,现在好像IQmath能用在LM3S芯片上.麻烦问下TI专家,IQmath如何使用,其中的cmd文件如 ...…

查看全部问答>

为什么我这个板子一接485电源电压就会不稳定呢,只有3V,求大侠们帮忙

这个板子,也不知道是电源部分还是,485部分有问题,只要一连接485电源电压就出现不稳定,万用表量一下电源电压只剩3V,求解…

查看全部问答>