zoukankan      html  css  js  c++  java
  • STM32 例程-3 Proteus下单按键试验

    在例程2的基础上增加端口9,7配置

    #include "stm32f10x.h"
    __IO uint32_t TimingDelay;
    u16 i=0;
    void LED_GPIO_Config(void)
    {
    	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    	  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
    	  GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
    	
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU ;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
    	
    	  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
    }
    void NVIC_Configuare(void)
    {
    	NVIC_InitTypeDef NVIC_InitStructure;
    	NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
    	NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x0F;
    	NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    	NVIC_Init(&NVIC_InitStructure);
    }
    void TIM3_Configuare(void)
    {
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_TimeBaseStructure.TIM_Period = 10-1;                  
        TIM_TimeBaseStructure.TIM_Prescaler =(200-1);    
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;         
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 
        
        TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE); 
        TIM_Cmd(TIM3, ENABLE);  
    
    }
    void delay_nms(__IO uint32_t nTime)
    {
      TimingDelay=nTime;
    	while(TimingDelay!=0);
    }
    void Init_SysTick(void){
    
    	if(SysTick_Config(SystemCoreClock/1000))
    		while(1);
    }
    int main(void)
    {
    	u8 kent=0;
      SystemInit();
    	RCC_ClockSecuritySystemCmd(ENABLE);
      LED_GPIO_Config();
    	NVIC_Configuare();
    	TIM3_Configuare();
    	Init_SysTick();
    	while(1)
    	{
    		if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==0)
    		{
    			delay_nms(10);
    			if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==0)
    			kent++;
    			if(kent%2)
    			GPIO_SetBits(GPIOC,GPIO_Pin_7);
    			else
    				GPIO_ResetBits(GPIOC,GPIO_Pin_7);
    			while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)==0);
    		}
    			//GPIO_SetBits(GPIOC,GPIO_Pin_8);
    			//delay_nms(1000);
    			//GPIO_ResetBits(GPIOC,GPIO_Pin_8);
    			//delay_nms(1000);
    	}
    }
    

      代码如上,增加红色部分,运行效果如下,达到目标预期

    1、建了一个小群:616945527(软件), 欢迎大家加入,加群口令abc123,硬件嵌入式开发者推荐75764412(单片机)。
    闲置域名www.nsxz.com出售(等宽等高字符四字域名,可组合多种有意义词语)。
  • 相关阅读:
    C#基础:Lambda表达式
    ACF:让控制台程序变得更为简单
    改变应用程序配置文件的文件名
    终止正在执行的线程
    C#基础:值类型、引用类型与ref关键字
    C#基础:匿名方法
    C#基础:泛型委托
    C#基础:事件(一)
    常用软件注册机
    一场惊艳的狂欢
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/14401230.html
Copyright © 2011-2022 走看看