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、观察示波器

本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。

浙公网安备 33010602011771号