让LED灯以0.1s的速率闪烁5s
注意:如果设置了标志位一定要想清楚标志位使用后要不要清零

设置定时器中断,让每隔0.1s进入一次中断
1.在cube中配置定时器TIMx,把时钟来源配置为内部时钟(Internal Clock),再设置PSC(8000-1)和ARR(10000-1),打开定时器中断
2.在需要进入定时器中断的条件下开启定时器中断( HAL_TIM_Base_Start_IT(&htimx) )
3.在定时器中设计数器(static uint16_t count=0),每进入一次定时器中断计数器加一(count++),直到加到50次表示经过5s后关闭定时器中断并且清除定时器中断标志
( HAL_TIM_Base_Stop_IT(htim) ; _HAL_TIM_CLEAR_FLAG(htim,TIM_FLAG_UPDATE) )
将LED灯的亮灭表示为8进制
NUM代表0~15
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,(NUM & 0x01)?GPIO_PIN_RESET:GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,(NUM & 0x02)?GPIO_PIN_RESET:GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,(NUM & 0x04)?GPIO_PIN_RESET:GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,(NUM & 0x08)?GPIO_PIN_RESET:GPIO_PIN_SET);
条件判断语句注意
下列代码才能正确将X到50后变为1
uint16_t X=2,Y=2;
if( X>=50 ){
X=1;
}
else{
X++;
}
下列代码只会将X到50后变为2,因为条件判断完后,X进行加1变成了2
uint16_t X=2,Y=2;
if( X>=50 ){
X=1;
}
X++;
使用EEPROM注意事项
1.在main函数中I2CInit( )必须放在LCD_Init( )后面
2.要让写入EEPROM中的值为0的操作如下
uint16_t num=EEPROM_Read(0)+1;
EEPROM_Write( 0 ,num);
让LED闪烁10次
for(int i=0;i<10;i++){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

2055

被折叠的 条评论
为什么被折叠?



