历史上的今天
今天是:2025年04月10日(星期四)
2019年04月10日 | STM32串口控制不同亮度等级的小灯
2019-04-10 来源:eefocus
利用串口的输入控制LED灯的亮度,从而达到PC机与MAU交互通信的功能
此功能由三个部分组成,分别是:串口通信、LED灯亮度等级的设定、以及按键按下LED灯熄灭。
首先串口通信过程中要配置串口重定义:
/* USER CODE BEGIN 4 */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
GETCHAR_PROTOTYPE
{
uint8_t ch;
while (HAL_UART_GetState(&huart2) == RESET);
HAL_UART_Receive(&huart2, (uint8_t *)&ch, 1, 0xffff);
// while (HAL_UART_GetState(&huart2) == RESET);
// HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 4 */
LED灯亮度等级设置:采用switch-case多分支选择结构来实现,每个case分别对应不同的亮度等级,用户在PC机上输入亮度等级后,通过串口通信,将此信息传输到MAU上,根据相应的亮度等级点亮LED灯。按键按下后LED灯熄灭,信号发送完毕。
int i,x,a;
void rank(int a); //声明函数
void delay(int i); //声明函数
int main(void) //主函数
{
while (1)
{
printf("选择0-9亮度等级rn");
scanf("%d",&a);
switch(a)
{
case 0 : rank(0);break;
case 1 : rank(1);break;
case 2 : rank(2);break;
case 3 : rank(3);break;
case 4 : rank(4);break;
case 5 : rank(5);break;
case 6 : rank(6);break;
case 7 : rank(7);break;
case 8 : rank(8);break;
case 9 : rank(9);break;
default:printf("Enter data error!rnPlease enter again!");
}
}
}
void rank(int i) //定义函数
{
i=a*1000;
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==1)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
delay(i);
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
delay(10000-i);
}
if((HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13))==0)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
}
}
void delay(int i)
{
while(i--);
}
串口中断方式的发动作:HAL_UART_Transmit_IT;
串口中断方式的收动作:HAL_UART_Receive_IT。
可以通过定时器、中断等方式控制LED的属性,中断方式可应用于多进程中。
史海拾趣
|
使用UpdateDriverForPlugAndPlayDevicesA安装驱动后,inf文件到那儿去了? 今天看到UpdateDriverForPlugAndPlayDevicesA(或UpdateDriverForPlugAndPlayDevicesW)安装驱动,但是在MSDN 中没有找到这个函数的说明,也不知道这个函数到底将 inf 文件拷贝到哪个目录下去了,哪位高手指点一下,谢谢!… 查看全部问答> |
|
build / build and sysgen current /sysgen current 有什么区别呢 build / build and sysgen current /sysgen current 有什么区别呢… 查看全部问答> |
|
入手英蓓特的STM32V100的板后的第一个想法是把上面的Ulink-Me给摘下来,但因项目比较紧一直没有时间去整,现在终于有点时间了,因此打算画个U-ME的小板,不知坛里有没有需要这个板的,当然目的是担点制板费啦,或者哪位已经有做好的板也可, 我 ...… 查看全部问答> |
|
刚拿到TI Cotex-M4的开发板, 玩了一下感觉非常爽~早就对TI的图形库有所耳闻, 赶紧用IAR写了个程序试一下~程序很简单, 就是显示一张图片, 高手不要喷哈~主要是说一下如何制作TI图形库支持的图片数据. 首先把要显示的图片用Photoshop打开(不好意思我 ...… 查看全部问答> |
|
开关电源电路图 一、主电路 从交流电网输入、直流输出的全过程,包括: 1、输入滤波器:其作用是将电网存在的杂波过滤,同时也阻碍本机产生的杂波反馈到公共电网。 2、整流与滤波:将电网交流电源直接整流为较平滑的直流电,以供下一级变换 ...… 查看全部问答> |
|
1.充分了解各方的设计需求,确定合适的解决方案 启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为 ...… 查看全部问答> |




