我现在是中断进不去,想必是有什么我没注意到的问题,这里贴代码,大家帮我看看,谢谢啦 
先用库函数写,然后都改成寄存器了,感觉这样学习挺好的。。。各位可以直接跟我说寄存器,我觉得这样更加直观
[mw_shl_code=c,true]#include "stm32f4xx.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#define NOBEEP
void SysTickDelay(uint32_t nus)
{
	if(nus == 0)
	  	return;
	// SysTick->LOAD = nus * 16 / 8;				// HSI is about 16 MHz, and FCLK = SYSCLK / 8
	SysTick->LOAD = nus * 8 / 8;					// HSI equ 8 MHz, and FCLK = SYSCLK / 8
	// SysTick->LOAD = nus * 5376 / 100 / 8;		// PLL equ PLLsrc / 25 * 336 / 2 MHz
	SysTick->VAL = 0x00;
	SysTick->CTRL |= 0x01;
	while(!(SysTick->CTRL & ((uint32_t)0x1 << 16)));
	SysTick->CTRL &= ~(uint32_t)0x1;
}
void LED_BEEP_Init(void)
{
  	// 1.配置时钟
  	RCC->AHB1ENR |= (uint32_t)0x01 << 5;		// 启用GPIOF的时钟
	// 2.配置模式
  	GPIOF->MODER |= (uint32_t)0x01 << (8 * 2);	// 设置GPIOF8的模式为输出
  	GPIOF->MODER |= (uint32_t)0x01 << (9 * 2);	// 设置GPIOF9的模式为输出
  	GPIOF->MODER |= (uint32_t)0x01 << (10 * 2);	// 设置GPIOF10的模式为输出
  	// 3.配置输出模式
  	GPIOF->OTYPER &= ~((uint32_t)0x0 << 8);		// 0 推挽输出
	GPIOF->OTYPER &= ~((uint32_t)0x0 << 9);		// 0 推挽输出
	GPIOF->OTYPER &= ~((uint32_t)0x0 << 10);	// 0 推挽输出
	// 4.配置上下拉
  	GPIOF->  UPDR |= (uint32_t)0x01 << (8 * 2);		// 01 上拉
	GPIOF->  UPDR |= (uint32_t)0x01 << (9 * 2);		// 01 上拉
	GPIOF->  UPDR |= (uint32_t)0x01 << (10 * 2);		// 01 上拉
	// 5.配置速度
  	GPIOF->OSPEEDR |= (uint32_t)0x01 << (8 * 2);	// 01 25MHz
  	GPIOF->OSPEEDR |= (uint32_t)0x01 << (9 * 2);	// 01 25MHz
	GPIOF->OSPEEDR |= (uint32_t)0x01 << (10 * 2);	// 01 25MHz
	// 6.锁定模式(可选,锁定之后引脚模式便不可以更改)
	GPIO_PinLockConfig(GPIOF, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);
		// 对LCKR按说明写入即可
	
	// 7.配置完成,给定初始输出
  	GPIOF->ODR = (uint32_t)0xFFFFFFFF;				// 输出数据寄存给定
	GPIOF->BSRRH = (uint16_t)((uint16_t)0x1 << 8);	// 复位寄存给定,关闭蜂鸣器
  	GPIOF->BSRRL = (uint16_t)((uint16_t)0x1 << 9);	// 置位寄存给定,关闭红灯
  	GPIOF->BSRRH = (uint16_t)((uint16_t)0x1 << 10);	// 复位寄存给定,打开绿灯
}
void RCC_SetSYSCLK_HSI()
{
	__IO uint32_t cfgr = 0;
	cfgr = RCC->CFGR;
	cfgr &= ~(uint32_t)0x3;		// SET HSI AS SYSTEM CLOCK
	RCC->CFGR = cfgr;
}
void RCC_SetSYSCLK_HSE()
{
	__IO uint32_t cfgr = 0;
	cfgr = RCC->CFGR;
	cfgr &= ~(uint32_t)0x03;
	cfgr |= (uint32_t)0x1;		// SET HSE AS SYSTEM CLOCK
	RCC->CFGR = cfgr;
}
void RCC_SetSYSCLK_PLL()
{
  	__IO uint32_t cfgr = 0;
	cfgr = RCC->CFGR;
	cfgr &= ~(uint32_t)0x3;
	cfgr |= (uint32_t)0x2;		// SET PLL AS SYSTEM CLOCK
	RCC->CFGR = cfgr;
}
void SysTick_Init()
{
  	SysTick->CTRL &= ~((uint32_t)0x1 << 2);		// CLKSOURCE, =1--FCLK, =0--STCLK(外部时钟源)
	SysTick->CTRL |= ((uint32_t)0x1 << 1);		// 启用中断方式
}
void RCC_Init()
{
	// RCC_SetSYSCLK_HSI();		// 配置HSI为SYSCLK,16MHz
	// RCC_SetSYSCLK_PLL();		// 配置PLL为SYSCLK
	RCC_SetSYSCLK_HSE();		// 配置HSE为SYSCLK
}
void main()
{
  RCC->APB2ENR|=1<<14;  						//使能SYSCFG时钟  
  	RCC_Init();
  	LED_BEEP_Init();
#ifdef NOBEEP
	GPIOF->BSRRH = (uint16_t)((uint16_t)0x1 << 8);
	#define MASK 0x6
#else
	#define MASK 0x7
#endif
	uint32_t delayms = 500;
	while(1)
	{
		GPIOF->ODR ^= (uint16_t)MASK << 8;
		SysTickDelay(1000 * delayms);
	}
}
void SysTick_Handler(void)
{
  	GPIOF->BSRRL = (uint16_t)((uint16_t)0x1 << 8);
	return;	
}
[/mw_shl_code]
  
  |