蓝桥杯嵌入式——LED灯

让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);

}

adc比较大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值