我是靠谱客的博主 细心大神,最近开发中收集的这篇文章主要介绍Stm32旧版库函数13——定时器的使用\time3,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include "stm32f10x_lib.h"
#include "usart.h"
#include "delay.h"
#include "sys_config.h"
#include  <math.h>    //Keil library  


#define   uchar unsigned char
#define   uint unsigned int    

void init_MotorPin()
{
  GPIO_InitTypeDef GPIO_InitStructure;

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;                 //    选中管脚9
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         // 推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         // 最高输出速率50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);                 // 选择A端口
}

//定时器3中断服务程序    
void TIM3_IRQHandler(void)
{                                       
    if(TIM3->SR&0X0001)//溢出中断
    {
      USART1_SendData('*');             //每过1秒,就发送一个字符       
      GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0)));    
      GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1)));                                                
    }                   
    TIM3->SR&=~(1<<0);//清除中断标志位         
}
  /*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
** 输    入    : 无
** 输    出    : 无
** 返    回    : 无
********************************************************************************
*/
int main(void)
{
  Stm32_Clock_Init(3);         //配置RCC 24m
  Delayms(10);
  GPIO_Configuration();         //配置GPIO
  USART1_Configuration();     //配置串口1
  init_MotorPin();
  Timerx_Init(10000,2399);
  while(1)
 {

//    USART1_SendData('X');             
//    USART1_SendData(0X0D);     //换行
//    USART1_SendData(0X0A);     //回车
    Delayms(5);                 //延时
  }
}

//通用定时器中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void Timerx_Init(u16 arr,u16 psc)
{
    RCC->APB1ENR|=1<<1;//TIM3时钟使能    
     TIM3->ARR=arr;  //设定计数器自动重装值//刚好1ms    
    TIM3->PSC=psc;  //预分频器7200,得到10Khz的计数时钟
    //这两个东西要同时设置才可以使用中断
    TIM3->DIER|=1<<0;   //允许更新中断                
    TIM3->DIER|=1<<6;   //允许触发中断       
    TIM3->CR1|=0x01;    //使能定时器3
      MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2                                    
}

 

最后

以上就是细心大神为你收集整理的Stm32旧版库函数13——定时器的使用\time3的全部内容,希望文章能够帮你解决Stm32旧版库函数13——定时器的使用\time3所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部