资深版主
 
- 积分
- 4306
- 金钱
- 4306
- 注册时间
- 2018-6-30
- 在线时间
- 808 小时
|
本帖最后由 1208 于 2019-1-21 20:40 编辑
本实验通过串口数字0-9的输入值对延时函数进行时间延时
从而实现灯不同亮度的等级控制
将a的值先写在延时函数里面,再通过转换为串口输出进行控制
a=USART_RX_BUF[0]-'0'; //ASCII码转换
[mw_shl_code=c,true]int main(void)
{
int a=1;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
printf("选择0-9亮度等级\r\n");
printf("亮度等级%d\r\n",a);
while(!(USART_RX_STA&0x8000)) // USART_RX_STA置1时,!1=0,就进入灯
{ // USART_RX_STA置0时,!0=1,就进入更新状态
GPIO_SetBits(GPIOA,GPIO_Pin_8);
delay_ms(20-(2*a));
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
delay_ms((2*a)); //a=0,就会卡死,所以只能从1开始
}
a=USART_RX_BUF[0]-'0'; //ASCII码转换
USART_RX_STA=0; //清除状态位
}
}[/mw_shl_code]
|
|