初级会员

- 积分
- 85
- 金钱
- 85
- 注册时间
- 2012-6-13
- 在线时间
- 0 小时
|

楼主 |
发表于 2012-6-23 23:55:59
|
显示全部楼层
回复【2楼】正点原子:
把Stm32_Clock_Init(9)改成9确实变慢了,闪烁间隔变得变长,为什么频率变快,反而更慢????
---------------------------------
#include <stm32f10x_lib.h>
#include <sys.h>
#include <delay.h>
int flag=0;
void WWDG_IRQHandler(void)
{
WWDG->SR=0;//清除中断
WWDG->CR|=0xFF;//计数初值设置为7F,启用看门狗
PDout(2)=~PDout(2); //PD2翻转
}
void TIM3_IRQHandler(void)
{
TIM3->SR&=0XFFBE;// 无触发器中断产生
PAout(8)=~PAout(8); //PA8翻转
}
int main()
{
Stm32_Clock_Init(0);//系统时钟设置,设置为16MHz,
delay_init(72);//延时初始化
RCC->APB2ENR|=1<<2;//使能PORTA时钟
RCC->APB2ENR|=1<<5;//使能PORTD时钟
RCC->APB1ENR|=1<<11;//使能WWDG时钟
RCC->APB1ENR|=1<<1;//定时器3时钟使能
GPIOA->CRH&=0xFF0FFFFF;
GPIOA->CRH|=0X00800000;//设定PA13为输入
GPIOA->ODR&=0x0000DFFF;
GPIOA->ODR|=0x00002000; //设定为输入上拉
GPIOD->CRL&=0xFFFFF0FF;
GPIOD->CRL|=0X00000300;//设定PD2为输出,连接DS1
GPIOD->ODR&=0x0000FFFB;
GPIOD->ODR|=0x00000004; //设定输出高
GPIOA->CRH&=0xFFFFFFF0;
GPIOA->CRH|=0X00000003;//设定PA8为输出,连接DS0
GPIOA->ODR&=0x0000FEFF; //输出低电平
delay_ms(300);//复位后点亮DS0 300ms
GPIOA->ODR|=0x00000100; //设定输出高
//-------------设定定时器TIM3--------------------//
TIM3->ARR=0x1C1F;//定时器时钟为72MHz,计数到7200,
TIM3-> SC=0x1C1F;//7199+1=7200分频,计数器时钟相当于10KHz
TIM3->DIER|=1<<0;//允许更新中断
TIM3->DIER|=1<<6;//使能触发中断
TIM3->CR1|=1<<7;//自动重装载允许位
TIM3->CR1|=1;//使能计数器
//------------设定watchdog定时器----------------//
WWDG->CFR|=0x380;//设置为计数到0x40时中断,计数频率=2197Hz
WWDG->CFR|=0x48;//窗口值设置为48
WWDG->CR|=0xFE;//计数初值设置为7F,启用看门狗
WWDG->CR|=0x40;//T6设置为1,以防上电时候复位
MY_NVIC_Init(2,2,WWDG_IRQChannel,2);//抢占2,子优先级2,组2
MY_NVIC_Init(1,1,TIM3_IRQChannel,2);//抢占2,子优先级1,组2
while(1)
{
GPIOA->CRH|=0X00000003;
}
} |
|