-
GD32F303用systick做延时出现延时不准 sos
/* Configure the system clock */ rcu_config(); /* configure systick */ systick_config(); /* GPIO configuration */ gpio_config(); while (1) { gpio_bit_set(GPIOB, SCRPL_Pin); mydelay(); // delay_1ms(1); gpio_bit_reset(GPIOB, SCRPL_Pin); delay_1ms(1); } void mydelay(void) { uint16_t i; i=5000; while(0U != i){ i--; } } 在用2个delay_1ms(1)延时时,端口高低电平时间都是1ms,但是如果把高电平的延时换成for循环实现的延时会使低电平的时间也发生变化不是1ms了。
1594浏览量 0回复量 关注量 -
CH579M BLE例程Peripheral中CH57X_BLEInit()函数关闭了SysTick的中断
RT,CH579M BLE例程Peripheral中CH57X_BLEInit()函数为什么要关闭SysTick的中断 代码如下: SysTick_Config( SysTick_LOAD_RELOAD_Msk ); SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk ; /* disable SysTick IRQ */ 代码中对SysTick设置了最大的 SysTick_LOAD_RELOAD_Msk,为0xFFFFFF,且关闭了中断 问题:重装载值可以改吗?中断可以打开吗?
3546浏览量 2回复量 关注量 -
航顺单片机程序总是死
程序死在了自带库的微秒延时 void BSP_SYSTEM_Delay_us(uint32_t usCnt) { /* SysTick default clock source: HCLK/8 = 32MHz/8 = 4MHz */ SysTick->LOAD = 4 * usCnt; /* Clear SysTick current counter value */ SysTick->VAL = 0; /* Enable SysTick counter */ SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; /* Wait for SysTick counter to 0 */ while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk))//死在这一部 { } /* Disable SysTick counter */ SysTick->CTRL = ~SysTick_CTRL_ENABLE_Msk; /* Clear SysTick current counter value */ SysTick->VAL = 0; }
2978浏览量 4回复量 关注量 -
用SYSTICK延时实现stm32f103ZET6的呼吸灯效果
[color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]今天学习了pwm的原理后,尝试用SYSTICK模拟pwm的占空比变化来实现LED的呼吸效果,但没有成功.是因为不使用GPIO的pwm模式就无法输出模拟电压吗?[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]代码如下:[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]int main(void)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]{[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] [/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] u32 i;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] LED_Init();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] delay_init();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] [/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] while(1)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] for(i=0xFFFFF; i>0 ;i--)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] LED_Output_Low();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] delay_ms(1);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] LED_Output_High();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] delay_ms(9);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] [/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] for(i=0xFFFFF; i>0;i--)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] LED_Output_Low();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] delay_ms(9);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] LED_Output_High();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] delay_ms(1);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px] [/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]}[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]在两个时间段内赋予不同的占空比,跟pwm的原理应该是一样的,但不知道为什么不能实现呼吸灯效果[/size][/font][/backcolor][/color]
12045浏览量 32回复量 关注量 -
用SYSTICK延时stm32f103ZET6的呼吸灯效果 sos
今天学习了pwm的原理后,尝试用SYSTICK模拟pwm的占空比变化来实现LED的呼吸效果,但没有成功.是因为不使用GPIO的pwm模式就无法输出模拟电压吗? 代码如下: int main(void) { u32 i; LED_Init(); delay_init(); while(1) { for(i=0xFFFFF; i>0 ;i--) { LED_Output_Low(); delay_ms(1); LED_Output_High(); delay_ms(9); } for(i=0xFFFFF; i>0;i--) { LED_Output_Low(); delay_ms(9); LED_Output_High(); delay_ms(1); } } } 在两个时间段内赋予不同的占空比,跟pwm的原理应该是一样的,但不知道为什么不能实现呼吸灯效果
3496浏览量 0回复量 关注量 -
GD32F103 systick中断时间不对 sos
自己新建了GD32F103CBT6工程,建好后调试进不去主函数在系统初始化时钟就死了,后来把主频设置成72M就好了,但是systick中断延时不对,大概7ms进入一次,测试Delay延时也出现死机。哪位大神知道什么原因
3448浏览量 0回复量 关注量