delay_ms(100);WWDGT_Init();//窗口看门狗初始化 USART_init(115200);//USART2初始化 printf("...
system_config(void);void delay_ms(uint32_t count);void delay_us(uint32_t count);#endif ...
代码原本的想法是,在发送完BUFFER里面的数据之后稍作延时delay_us(2),就拉高SPI Enable(对应DSP_CS引脚)。代码用在STM32F103CBT6上没有问题,但是用在GD32F103CBT6上,意想不到的现象出现了,此时程序好像不再是顺序执行了,也就是发送完了数据之后,再执行IO拉高操作,而是数据发送和IO控制变成了并行操作,数据发送和...
延时时间固定5us,这样代码会简单很多,原因如“I2C总线时序要求”一节中,时序基本都要求了最小时间间隔5us足以,有两项有最大时间要求,却不影响我们编码。 #defineI2C_Set1(i2c)GPIO_SetBits(i2c);I2C_Delay(5);#defineI2C_Set0(i2c)GPIO_ResetBits(i2c);I2C_Delay(5);#defineI2C_Get(i2c)GPIO_ReadInputBi...
(GPIOB, GPIO_Pin_11); //读取SDA电平 Delay_us(10); //延时10us,防止时序频率超过要求 return BitValue; //返回SDA电平 } /** * 函 数:I2C初始化 * 参 数:无 * 返回值:无 * 注意事项:此函数需要用户实现内容,实现SCL和SDA引脚的初始化 */ void MyI2C_Init(void) { /*开启时钟*/ RCC_APB...
0x1);}OSTaskDelay(500);}}void mdTestTask1(void *arg){uint16 temp=0;for(;;){if(ERR_RW_...
(LED1); delay_1ms(250); gd_eval_led_toggle(LED1); delay_1ms(250); } } /*单击按键事件*/ void BTN1_SINGLE_Click_Handler(void *btn){ } /*双击按键事件*/ void BTN1_DOUBLE_Click_Handler(void *btn){ } /*达到长按时间阈值时触发一次*/ void BTN1_LONG_PRESS_START_Handler(void *btn...
VOIDOS_TASK_TaskDelay(INU16ms); 宏定义 define 必须大写 typedef 可以小写 例如, #defineOS_TASK_SWITCH_INTERVAL10/* 单位ms */typedefU32StackSize_t;/* 仅用于堆栈 */ 类型定义 统一使用下面的,编程最关心符号位和位宽 #defineU8unsigned char#defineS8char#defineU16unsigned short#defineS16short#define...
延时时间固定5us,这样代码会简单很多,原因如“I2C总线时序要求”一节中,时序基本都要求了最小时间间隔5us足以,有两项有最大时间要求,却不影响我们编码。#define I2C_Set1(i2c) GPIO_SetBits(i2c);I2C_Delay(5); #define I2C_Set0(i2c) GPIO_ResetBits(i2c);I2C_Delay(5); #define I2C_Get(i2c) GPIO...
案例1: 客户在软件中编写了一个延时函数如下: void delay(void) { U8 I; For(i=0;i75;i++); } 通过实测相同的这一段代码: ST执行该函数的延时时间是7.4us GD执行该函数的延时时间是5.4us。 如果客户的应用对时间要求比较严格请不要忽略GD代码执行速度的问题,参数需要做一定的调整。 案例2: 客户采用IO...