一是,为什么我们要先开启STM32外设时钟;二是,关于STM32的 I/O 复用功能及什么时候开启AFIO时钟。STM...
1.为什么我们要先开启STM32外设模块时钟; 2.关于STM32的 I/O 复用功能及什么时候开启AFIO时钟; 1 为什么我们要先开启STM32外设时钟 讲述本节内容之前先说一个案例: 前段时间,有一个朋友为配置EXTI的代码折腾了一天,最终没有结果。于是问了我这样一个问题:“你用过STM32F051C8T6的外部中断吗,就是GPIO管脚做中...
1.普通延时法这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。下面的代码是在网上搜到的,经测试延时比较精准。/粗延时函数,微秒void delay_us(u16 time)u16 i=0;while(time-)i=10;/自己定义while(i-) ;/毫秒级的延时void delay_ms(u16 time...
u8 i,dat = 0x00; for(i=0; i<8; i++) { dat = dat<<1; dat = dat|dht11_read_bit();//将串行数据读取出来 } return dat; } 当DHT11响应后,就开始通过单总线传输数据,在读取位函数里,通过高电平的时间长短来判断输出的是'1'还是'0',在读取字节函数里,调用读取位函数,将传输的每8位整合...
外设可通过单片机的I/O,SPI,I2C等总线控制。 常见stm32外设:基本IO、定时器TIM、串口USART、ADC模数...
u8 i=0; u8 data_=0;//因为上面已经把端口设置为开漏,电路外部接了山拉电阻,可以不切换输入输出模式,直接使用。//DS1302_DAT_INPUT();DS1302_SCK=0; DS1302_delay_us(3);for(i=0;i<7;i++)//这里发现设为8的话输出数据不对,很乱{if((DS1302_DATIN) ==1) ...
推挽是指I/O 端口有很强的电流推动能力,可以输出一定量的电流,用于推动一些元器件(如LED)工作。开漏则是弱电流的输出,用于逻辑电平的数据信号通信。 定时器在单片机内部有很多种,RTC 就属于定时器的一种。定时器的实际上就是计时,当达到设定的时间后去做某个事件。定时器主要是通过系统时钟来计算时间的,时钟产生...
1、先进行系统时钟、延时函数、LED的初始化,然后配置按键外部中断,通过两个按键外部中断实现计时及终止计时功能。 时间的记录则用一个二维数组分别记录时、分、秒,根据题目要求显示。 2、万年历功能主要是通过三个按键KEY3控制切换,KEY2和KEY1分别对年、月、日、时、分、秒或加或减操作,需要对闰年进行判断。减操...
voidSystick_Delay_ms(uint32_tms){//系统时钟SysTick_Config(72000);//uint32_ti;for(i=0;i<ms;i++) {//即为计数结束后 SysTick中CTRL寄存器第十六位就会置1//等待其读数 达到后又会置0 从而实现延时while(!((SysTick->CTRL) & (1<<16))); ...
数码管上前7位都可做时间显示,以右下角红点分割时、分、秒、0.1秒。 最右边一位以字母的形式指示计时器状态: d:倒计时(Decrease) i:正计时(Increase) s:设置(Setting) 按下KEY1或遥控器上的播放键,计时开始,数码管最后一位闪动。再次按下后计时暂停,停止闪动。