【MM32F5270开发板试用】+ systick定时器做延时测试
本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:小会
编写测试程序有时会用到延时函数,下面使用systick定时器做延时测试。
一、systick时钟框图
二、程序
2.1、初始化
void delay_init(){ fac_us=CLOCK_SYS_FREQ/8000000;fac_ms=(uint16_t)fac_us*1000;}
2.2、延时函数
void delay_us(uint32_t nus){ uint32_t temp; SysTick->LOAD=nus*fac_us; SysTick->VAL=0x00; SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<CTRL&=~SysTick_CTRL_ENABLE_Msk; SysTick->VAL =0X00; }void delay_ms(uint16_t nms){ uint32_t temp; SysTick->LOAD=(uint32_t)nms*fac_ms; SysTick->VAL =0x00; SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<CTRL&=~SysTick_CTRL_ENABLE_Msk; SysTick->VAL =0X00; }
2.3、主程序
int main(void){ BOARD_Init(); delay_init(); init_led(); init_key(); printf("\r\nled test.\r\n"); while(1) { GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 1u); delay_ms(1); GPIO_WriteBit(BOARD_LED0_GPIO_PORT, BOARD_LED0_GPIO_PIN, 0u); delay_ms(1); }}
三、程序测试
LED4指示灯电平输出,1ms间隔翻转。
输出电平波形: