历史上的今天
返回首页

历史上的今天

今天是: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的属性,中断方式可应用于多进程中。


推荐阅读

史海拾趣

诚润电子(CHEVRON)公司的发展小趣事

诚润电子深知,一个优秀的团队是企业成功的关键。因此,他们一直致力于打造一支高素质、专业化的团队。公司注重员工的培训和发展,为员工提供广阔的职业发展空间和良好的福利待遇。同时,诚润电子还积极营造一种积极向上的企业文化氛围,让员工在工作中感受到归属感和成就感。这种良好的团队建设机制为诚润电子的持续发展提供了有力的保障。

CSR plc(剑桥硅晶无线电)公司的发展小趣事

2009年,CSR plc以1.36亿美元成功收购了SiRF技术控股公司。这一收购为CSR plc带来了GPS和A-GPS的知识产权组合、航位推算和位置中心平台等重要技术资源,使其在世界无晶圆半导体厂商中的地位得到了进一步巩固。此次收购也让CSR plc的客户群体得到了极大的扩展,包括世界排名前七位的手机制造商中的六家,以及世界前五位的个人导航设备制造商等。

Bedford Opto公司的发展小趣事

Bedford Opto公司在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,致力于减少生产过程中的污染和能耗。同时,公司还积极参与公益事业,为社会做出积极贡献。

南京中科微公司的发展小趣事

CSM成立以来,一直致力于研发具有自主知识产权的射频/模拟关键芯片。经过数年的辛勤耕耘,团队成功开发出了多款高性能的集成电路芯片与模块,其中不乏在功耗、成本、性能等方面达到国际先进水平的产品。这些技术突破不仅为公司赢得了市场的认可,也为国内电子行业的发展注入了新的活力。

AIM公司的发展小趣事

AIM公司深知质量是企业的生命线。因此,公司始终将质量管理放在首位,建立了严格的质量控制体系。从原材料采购到产品出厂,每一个环节都经过严格把关,确保产品的质量稳定和可靠。同时,AIM还注重品牌建设,通过提供优质的产品和服务,树立了良好的品牌形象和口碑。

爱普特微(aptchip)公司的发展小趣事

创立不久,爱普特微电子便迎来了一次重大的技术突破。公司成功研发出了全国产、全自主可控、高可靠性的32位微处理器芯片。这一产品的推出,不仅填补了国内市场的空白,更以其卓越的性能和稳定性,赢得了市场的广泛认可。随后,公司又基于自研IP库及RISC架构内核,量产了一系列全国产高可靠性32位MCU产品,广泛应用于工业控制、物联网、智能家电等领域。

问答坊 | AI 解惑

使用UpdateDriverForPlugAndPlayDevicesA安装驱动后,inf文件到那儿去了?

今天看到UpdateDriverForPlugAndPlayDevicesA(或UpdateDriverForPlugAndPlayDevicesW)安装驱动,但是在MSDN 中没有找到这个函数的说明,也不知道这个函数到底将 inf 文件拷贝到哪个目录下去了,哪位高手指点一下,谢谢!…

查看全部问答>

build / build and sysgen current /sysgen current 有什么区别呢

build / build and sysgen current  /sysgen current 有什么区别呢…

查看全部问答>

关于英蓓特的STM32V100板上的ULINK-ME

入手英蓓特的STM32V100的板后的第一个想法是把上面的Ulink-Me给摘下来,但因项目比较紧一直没有时间去整,现在终于有点时间了,因此打算画个U-ME的小板,不知坛里有没有需要这个板的,当然目的是担点制板费啦,或者哪位已经有做好的板也可, 我 ...…

查看全部问答>

波形幅度步进

波行幅度(0~5V间)要实现0.1V的步进有什么方法可以实现?…

查看全部问答>

【图形库】教你制作图片并使用图形库显示~

刚拿到TI Cotex-M4的开发板, 玩了一下感觉非常爽~早就对TI的图形库有所耳闻, 赶紧用IAR写了个程序试一下~程序很简单, 就是显示一张图片, 高手不要喷哈~主要是说一下如何制作TI图形库支持的图片数据. 首先把要显示的图片用Photoshop打开(不好意思我 ...…

查看全部问答>

开关电源电路图讲解。多图!!!

开关电源电路图 一、主电路 从交流电网输入、直流输出的全过程,包括: 1、输入滤波器:其作用是将电网存在的杂波过滤,同时也阻碍本机产生的杂波反馈到公共电网。 2、整流与滤波:将电网交流电源直接整流为较平滑的直流电,以供下一级变换 ...…

查看全部问答>

示波器电压探头测高频的问题

我用示波器的电压探头测量高频电阻上的电压信号,发现只要电压探头一接上,信号反射就很厉害,这个是怎么回事,是哪里没有设置好?请教一下。。。…

查看全部问答>

跪求zrtech的PERII_8KD的资料

跪求zrtech的PERII_8KD的资料,各位大大,谢谢啦…

查看全部问答>

求助:LM5122空载电流很大 ,一直满占空比在跑, 可能是什么原因呢

求助:LM5122空载电流很大, 一直满占空比在跑 ,可能是什么原因呢? …

查看全部问答>

硬件设计经验谈(转)

1.充分了解各方的设计需求,确定合适的解决方案       启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为 ...…

查看全部问答>