zoukankan      html  css  js  c++  java
  • STM32 例程-1 Proteus下使LED闪烁(SysTick)

    1、Keil5 下新建一个STM32F103R6工程,目录结构

    2、 stm32f10x_it.h下添加

    extern __IO uint32_t TimingDelay;

    3、修改对应.c文件

    void SysTick_Handler(void)
    {
    	if(TimingDelay!=0x00)
    	{
    		TimingDelay--;
    	}
    }
    

    4、main.c文件

    #include "stm32f10x.h"
    __IO uint32_t TimingDelay;
    void LED_GPIO_Config(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        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_SetBits(GPIOC,GPIO_Pin_8);
    }
    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)
    {
      SystemInit();
      LED_GPIO_Config();
    	Init_SysTick();
        while(1)
        {
            GPIO_SetBits(GPIOC,GPIO_Pin_8);
            delay_nms(1000);
            GPIO_ResetBits(GPIOC,GPIO_Pin_8);
            delay_nms(1000);
        }
    }
    

    5、Proteus运行

     6、运行

    运行时会发现不是一秒闪烁一次,经过研究,解决方法如下

    默认72M计算机带不动,修改时钟频率为较低频率比如4M即可,如果你电脑比较差可以设置2M,1M.

    #ifdef SYSCLK_FREQ_HSE
      uint32_t SystemCoreClock         = SYSCLK_FREQ_HSE;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_4MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_4MHz;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_24MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_24MHz;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_36MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_36MHz;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_48MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_48MHz;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_56MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_56MHz;        /*!< System Clock Frequency (Core Clock) */
    #elif defined SYSCLK_FREQ_72MHz
      uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;        /*!< System Clock Frequency (Core Clock) */
    #else /*!< HSI Selected as System Clock source */
      uint32_t SystemCoreClock         = HSI_VALUE;        /*!< System Clock Frequency (Core Clock) */
    #endif
    

    7、观察示波器

      

      

      

    1、建了一个小群:616945527(软件), 欢迎大家加入,加群口令abc123,硬件嵌入式开发者推荐75764412(单片机)。
    闲置域名www.nsxz.com出售(等宽等高字符四字域名,可组合多种有意义词语)。
  • 相关阅读:
    记: Spring Data Jpa @OneToMany 级联查询被动触发的问题
    后端小白的Bootstrap笔记
    最短路径问题
    深度优先搜索 & 广度优先搜索
    检讨书板子
    关于计时器
    博客园美化
    P4819 杀人游戏 (图论 )
    水站 (二分)
    对拍
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/14399064.html
Copyright © 2011-2022 走看看