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                                    
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengyuzhe13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值