找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3337|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F107定时器实现1秒 PC9管脚状态反转

[复制链接]
跳转到指定楼层
楼主
ID:432028 发表于 2018-11-24 12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm32f10x.h"
void delay(void);//调用延时函数
void GPIO_Config(void);//调用GPIO_Config函数
void TIM1_Config(void);
void NVIC_Config(void);//调用NVIC_Config函数

int main(void)
{
        /*配置PC9 为推挽输出*/
        GPIO_Config();
        /*配置 TIM1 为 1 s中断*/
        TIM1_Config();
        /*使能TIM1 中断为向上溢出中断*/
        NVIC_Config();


        /*等待 TIM1 */
        while(1)
               
        {}
               
}
void GPIO_Config(void)
{
        /*定义一个以GPIO_InitStructure为名的GPIO_InitTypeDef类型的结构体*/
        GPIO_InitTypeDef GPIO_InitStructure;

        /*使能GPIOC和GPIOD时钟*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        /*选择管脚9*/                                                                                                                                                                                    
        GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9;
        /*选择管脚速度为50MHz*/
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        /*配置PC9管脚为推挽输出*/
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        /*按照GPIO_InitStructure的配置进行初始化,并且选择C端口*/
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        
}

void TIM1_Config(void)
{
        /*initialize TIM_TimeBaseInitTypeDef Structure*/
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        /*enable the rcc of TIM1*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

    /*预分频系数为7200,因为0时不分频,所以减1*/
        TIM_TimeBaseStructure.TIM_Prescaler=(7200-1);  
               
        /*自动装载的计数值,因为计数从0 开始,所以减1*/
          TIM_TimeBaseStructure.TIM_Period=(10000-1);            

        /*采样分频之间的分频比例,0代表不分频*/
          TIM_TimeBaseStructure.TIM_ClockDivision=0;

        /*向上计数*/
          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        
        /*重复计数次数为0,即每次溢出都更新*/     
          TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
        
        /* 根据TIM_TimeBaseStructure的设定设置TIM1*/        
        TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

        /*清除TIM1溢出中断标志*/
        TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

        /*打开溢出中断标志*/
        TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);

        /*使能TIM1计数器,开始工作*/
        TIM_Cmd(TIM1,ENABLE);
}

void NVIC_Config(void)
{
        /*定义一个以NVIC_InitStructure为名的NVIC_InitTypeDef类型的结构体,该结构体的原型在misc.h中*/
        NVIC_InitTypeDef NVIC_InitStructure;
        
        /*在NVIC中配置中断通道为EXTI3,抢占优先级为7,从优先级为7,并使能该中断*/
        NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;  //没有抢占优先级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;                   //从优先级为1,从优先级至少为1
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                //在NVIC_InitStructure中使能该中断
        NVIC_Init(&NVIC_InitStructure);                                                //initialize

}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表