#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "timer.h"
#include "smg.h"
//Mini STM32 开发板范例代码 3
// 串口实验
// 正点原子@ALIENTEK
//2010.5.28
//u16 shu;
int main(void)
{
Stm32_Clock_Init(9); // 系统时钟设置
delay_init(72); //延时初始化
// uart_init(72,9600); //串口初始化,此时没有用到
// LED_Init(); //初始化与 LED 连接的硬件接口
// Timerx_Init(5000,7199);//10Khz 的计数频率,计数到 5000 为500ms 500毫秒进一次中断 亮灭一次为1毫秒
display_Init(); //PA初始化
while(1)
{
LED07=1;
LED00=0;
delay_ms(1000);
LED00=1;
LED01=0;
delay_ms(1000);
LED01=1;
LED02=0;
delay_ms(1000);
LED02=1;
LED03=0;
delay_ms(1000);
LED03=1;
LED04=0;
delay_ms(1000);
LED04=1;
LED05=0;
delay_ms(1000);
LED05=1;
LED06=0;
delay_ms(1000);
LED06=1;
LED07=0;
delay_ms(1000);
}
}
为什么上面这个程序就能实现八个led灯循环点亮,
而下面这个程序就不可以呢? 在定时器3中断里面操作GPIOA->ODR|=0<<temp;
求原子大哥指导!!!
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "timer.h"
#include "smg.h"
//Mini STM32 开发板范例代码 3
// 串口实验
// 正点原子@ALIENTEK
//2010.5.28
u16 shu;
int main(void)
{
Stm32_Clock_Init(9); // 系统时钟设置
delay_init(72); //延时初始化
// uart_init(72,9600); //串口初始化,此时没有用到
// LED_Init(); //初始化与 LED 连接的硬件接口
Timerx_Init(5000,7199);//10Khz 的计数频率,计数到 5000 为500ms 500毫秒进一次中断 亮灭一次为1毫秒
display_Init(); //PA初始化
while(1)
{
}
}
void TIM3_IRQHandler(void)
{
u8 shu,temp;
if(TIM3->SR&0X0001)//溢出中断,数据手册305页
{
shu++;//LED1=!LED1;
if(shu==2)
{
shu=0;
emp++;
GPIOA->ODR|=0<<temp;
}
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
|