资深版主
 
- 积分
- 4306
- 金钱
- 4306
- 注册时间
- 2018-6-30
- 在线时间
- 808 小时
|
本帖最后由 1208 于 2019-7-30 11:29 编辑
本实验通过串口输入数字0到9,PWM就会输出相应等级的亮度
通过占空比的输出TIM_SetCompare1(TIM1,count)来达到灯的不同亮度
而这个count的值,可以通过串口接到ASCII数值进行转换的 count=USART_RX_BUF[0]-'0';
从而实现PWM就会输出相应等级的亮度
[mw_shl_code=c,true]int main(void)
{
int count;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口 推挽输出
TIM1_PWM_Init(100-1,7200-1); //复用输出,不能将复用输出放在推挽输出前面,否则会将其覆盖掉
//72M/(100*7200)=100HZ
printf("选择1-9亮度等级\r\n");
while(1)
{
// while(!(USART_RX_STA&0x8000)) // 当USART_RX_STA置0时,!0=1,就进入死循环,灯变得最亮
// while(USART_RX_STA&0x8000) // 当USART_RX_STA置1时,则完成接收,不会进入死循环
if(USART_RX_STA&0x8000) // 如果USART_RX_STA置1时,则接收完成
{
count=USART_RX_BUF[0]-'0'; //ASCII码转换,"0"在16进制里面代表30,字符转成数字
TIM_SetCompare1(TIM1,count); //占空比输出
USART_RX_STA=0; //清除状态位
printf("亮度等级%d\r\n",count);
}
}
}[/mw_shl_code]
将学到的东西分享给初学者,希望能有所感悟!
|
|