如果我们知道系统时钟频率为72MHz,并且想要实现1us的延时,我们可以在调用delay_us函数时传入72作为参数: c delay_us(72); // 延时约1us 测试并验证延时函数的准确性: 为了验证延时函数的准确性,你可以使用示波器或其他测量工具来测量实际延时时间,并与预期值进行比较。如果存在差异,可能需要调整延时函数中的参...
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;// 关闭计数器SysTick->VAL =0;// 时间到了溢出后要记得清空}voiddelay_us(uint32_tus){ SysTick->LOAD = SystemCoreClock /1000000-1;// 设置SysTick定时器为1毫秒SysTick->VAL =0;// 设置初值为0SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;// 使能...
#define SYSTEM_FQ 120000000//定时器的时钟频率,以120Mhz为例voiddelay_us(intcount){SysTick->LOAD=count*(SYSTEM_FQ/1000000)-1;//设定重装载值SysTick->VAL=0;// 计数归零SysTick->CTRL=SysTick_CTRL_CLKSOURCE_Msk|SysTick_CTRL_ENABLE_Msk;// 使能定时器,开始计数while((SysTick->CTRL&SysTick_CTRL...
sys移植 由于GPIO地址映射一样,所以sys通用 但是GD没有define GPIO PORT地址,所以新增定义 delay移植只关注主频对systick的影响 主频默认用120M,8M外部时钟转换而来 所以确保Fac_Us * 8 / 120M = 1us即可 另外,主频的提高会导致systick时钟递增的速度更快,寄存器原本从零递增到最大值的时间是1.8s,主频增加后变...
delay_1us(2); } /* reset I2C */ i2c_software_reset_config(I2C0, I2C_SRESET_RESET); i2c_software_reset_config(I2C0, I2C_SRESET_SET); gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
打开`systick.h文件,添加delay_1us(uint32_t count)函数,如下图: 打开systick.c文件,修改systick_config函数: 原来的: voidsystick_config(void){/* setup systick timer for 1000Hz interrupts */if(SysTick_Config(SystemCoreClock /1000U)) {/* capture error */while(1) { ...
capture error */while(1){}}// 关闭滴答定时器SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;/* configure the systick handler priority */NVIC_SetPriority(SysTick_IRQn,0x00U);}voiddelay_us(uint32_tcount){delay=count;// 使能滴答定时器SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;while(0U!=delay){...
delay_1us(2);gpio_bit_set(GPIOB, GPIO_PIN_6);delay_1us(2);} /* reset I2C */ i2c_...
delay_us(1); } return read_data; } } 哎程序读取完成但是还需要配置啊,放弃只读取的函数吧重新写一个 int32_tcs1237_oper(int32_tread_data,uint8_tcommand,uint8_tregister) { uint8_ti; int32_tad_data =0; uint8_tbyte_temp; if(!gpio_input_bit_get(GPIOE,GPIO_PIN_4)) ...
delay_us(1); } return read_data; } } 哎程序读取完成但是还需要配置啊,放弃只读取的函数吧重新写一个 int32_tcs1237_oper(int32_tread_data,uint8_tcommand,uint8_tregister){uint8_ti;int32_tad_data =0;uint8_tbyte_temp;if(!gpio_input_bit_get(GPIOE,GPIO_PIN_4)) ...