同时,还需要编写一些底层的驱动函数,如延时函数Delay_us和 TFT 屏幕的绘图函数TFT_DrawImage等。在开发过程中,建议参考 OV7670 和 TFT 屏幕的相关数据手册以及 STM32 的开发文档,以确保代码的正确性和稳定性。
Delay_ms(500); //延时500毫秒Delay_us(500); //延时500微秒Delay_s(5); //延时5秒 在配置好GPIO和delay函数后,您甚至可以尝试制作一个简单的LED闪烁程序,以展示这些功能的实际应用。我们的程序被编写在User目录下的main.c函数内。在开始之前,我们需要包含stm32的库以及delay库。通过以下指令引入相关头文件...
void delay_init(void); void delay_xus(unsigned int xus); void delay_xms(unsigned int xms); #endif delay.c #include "delay.h" #include "stm32f10x.h" static unsigned int us_factor = 0; static unsigned int ms_factor = 0; void delay_init(void) { SysTick_CLKSourceConfig(SysTick_CLKSo...
1.delay.c #include "delay.h" void delay_us(uint32_t us) //利用CPU循环实现的非精准应用的微秒延时函数 { uint32_t delay = (HAL_RCC_GetHCLKFreq() / 8000000 * us); //使用HAL_RCC_GetHCLKFreq()函数获取主频值,经算法得到1微秒的循环次数 while (delay--); //循环delay次,达到1微秒延时 }...
delay(3); //主机拉高20~40us } //等待DHT11的回应 //返回1:未检测到DHT11的存在 //返回0:存在 uchar DHT11_Check() { uchar retry=0; while (DHT11_DQ_OUT&&retry<100)//DHT11会拉低40~50us { retry++; _nop_(); }; if(retry>=100)return 1; ...
while(1){ HC_SR04 = 1; delay_us(13); HC_SR04=0; if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上 升沿 { time=TIM5CH1_CAPTURE_STA&0X3F; time*=65536;//溢出时间总和 time+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间 printf("\r\nHIGH:%d us\r\n",time);//打印总的高 点平时...
LibSysTickDelayus((u32)(ms*1000));//普通方式延时}/** 函数名称:LibSysTickDelayus * 函数功能:带OS为微妙延时 * 输入参数: * 输出参数: **/voidLibSysTickDelayus(uint32_t us) { u32 ticks; u32 told,tnow,tcnt=0; u32 reload= SysTick->LOAD;//LOAD的值ticks = us*fac_us;//需要的...
rcc时钟初始化,延时功能初始化,延时若干us,延时若干ms 常用宏定义:最大值 最小值循环左移位CROL 循环右移位CROR CROL宏:对n位整数X循环左移i位 如果是8位整数一定没有bug CROR宏:对n位整数X循环右移i位 (a)delay.h #ifndefDELAY_H#defineDELAY_H#include<stm32f10x_gpio.h>#include<stm32f10x_rcc....
static __IO uint32_t delay_us_tick; void delay_us(uint32_t nUs) { delay_us_tick = nUs; while (delay_us_tick); } static __IO uint32_t delay_ms_tick; void delay_ms(uint32_t nMs) { delay_ms_tick = nMs; while (delay_ms_tick); ...
{ retry++; DelayUs(1); } if (retry >= 100) return 1; // 超时未响应 return 0; // DHT11响应正常 } // 从DHT11读取一个位 uint8_t DHT11_Read_Bit(void) { uint8_t retry = 0; // 等待数据线拉低50us表示数据开始传输 while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) &...