//PD4引腳控制LED燈的亮滅
void LED_CSH(void)????????????????????????//PD3,PD4端口初始化
{
? ? RCC->APB2PCENR|=0x20;? ? ? ? ? //開(kāi)啟GPIO_D的時(shí)鐘
? ? GPIOD->CFGLR&=~0xff000;
? ? GPIOD->CFGLR|=0x77000;
? ? GPIOD->OUTDR&=~0x18;
}
void TIM2_CSH(unsigned short shu)????????????//TIM2中斷初始化函數(shù)
{
? ? RCC->APB1PCENR|=0x1;? ? ? ? ? ? ? ? ? ? ?//使能TIM2的時(shí)鐘
? ? TIM2->CTLR1|=0x1<<7;? ? ? ? ? ? ? ? ? ? ?//使能自動(dòng)重裝載
? ? TIM2->CTLR1&=~(0x3<<5);? ? ? ? ? ? ? ? ? //選擇邊沿對(duì)齊
? ? TIM2->CTLR1|=0x1<<4;? ? ? ? ? ? ? ? ? ? ?//向下計(jì)數(shù)
? ? TIM2->DMAINTENR|=0x1;? ? ? ? ? ? ? ? ? ? //允許更新中斷
? ? TIM2->PSC=7199;? ? ? ? ? ? ? ? ? ? ? ? ? //預(yù)分頻器
? ? TIM2->ATRLR=shu;? ? ? ? ? ? ? ? ? ? ? ? ?//自動(dòng)重裝載
? ? TIM2->CTLR1|=0x1;? ? ? ? ? ? ? ? ? ? ? ? //使能計(jì)數(shù)器
? ? *(volatile unsigned int *)0xE000E104=0x1<<12;? ?//使能中斷
}
void TIM2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));????????????
void TIM2_IRQHandler(void)????????????????????????//中斷函數(shù)
{
? ? ? ?if(TIM2_UIF)
? ? {
? ? ? ? ? ?TIM2_UIF0;
? ? ? ? ? ?if(zj)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? GPIOD->OUTDR|=0x10;
? ? ? ? ? ? ? ?}
? ? ? ? ? ?else
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? GPIOD->OUTDR&=~0x10;
? ? ? ? ? ? ? ?}
? ? ? ? ? ?zj=~zj;
? ? }
}
int main(void)
{
? ? LED_CSH();
? ? TIM2_CSH(9999);
? ? js=0;
while(1)
? ? {
? ? ? ? GPIOD->OUTDR|=0x8;
? ? ? ? ?GPIOD->OUTDR&=~0x8;
}
}
如果while里面泵放?GPIOD->OUTDR&=~0x8,中斷按照設(shè)定的時(shí)間執(zhí)行亮滅。如果加了GPIOD->OUTDR&=~0x8中斷就不按照設(shè)定的時(shí)間中斷去控制PD4引腳了。(使用的是ch32V307-VCT6評(píng)估板)