前言
- 需要借助逻辑分析仪动态调整参数
- 此次测试的开发芯片为stm32f103vet6
延迟函数
声明
c
#define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/
void bsp_us_delay_nop(uint32_t us);
void bsp_ms_delay_nop(uint32_t ms);
定义
c
void bsp_us_delay_nop(uint32_t us) {
us = us * NOP_US_DELAY_MUL_CNT;
while (us--) {
__NOP();
}
}
void bsp_ms_delay_nop(uint32_t ms) {
for (uint32_t i = 0; i < ms; ++i) {
bsp_us_delay_nop(1);
}
}
测试
c
static void TEST_init() {
stm_pin_define_t *pb_5_ptr = stm_get_pin(PB5);
stm32_pin_define_mode_set(pb_5_ptr, pin_mode_output);
while (true) {
stm32_pin_define_toggle(pb_5_ptr);
bsp_us_delay_nop(2);
}
}
sys_init_export(TEST, TEST_init);
结果
满足预期效果