电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1315|回复: 1
收起左侧

[作业已审核] 4.21 32嵌入式学习二

[复制链接]

3

主题

12

帖子

73

积分

一级会员

Rank: 1

积分
73
发表于 2021-4-21 15:44:02 | 显示全部楼层 |阅读模式
IAR替代VC学习C语言
1、输出(printf)
2、输入(scanf)[stdint.h]

PID算法实例(后期再学习 目前了解代码)
1、位置型
2、增量型

cubeMX
配置------
时钟 clock (HSI HSE)
调试接口 SYS debug serial wire
I/O
IAR EWARM
keil MDK-ARM

GPIO输入输出
1、单灯闪烁等待延时
for(uint32_t i=0;i<500000;i++)
2、单灯闪烁轮询计数
uint32_t count=0;
uint8_t   flag=0;
count++;
if(count>=100000)
{
            count=0;//记住清零
            if(flag==0)
            {
                flag=1;
                HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); //灭灯
            }
            else
            {
                flag=0;
                HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); //亮灯
            }

}
3、多灯不同频率闪烁串行
for(uint32_t i=0;i<500000;i++)
for(uint32_t i=0;i<2500000;i++)
4、多灯不同频率闪烁并行
uint32_t count0=0;
uint8_t   flag0=0;

uint32_t count0=0;
uint8_t   flag0=0;

count0++;
if(count>=100000)
{
    count0=0;
    if(flag0==0)
     {
       flag0=1;
       HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET); //灭灯
      }
      else
      {
        flag0=0;
         HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET); //亮灯
       }
}
count1++;
if(count>=500000)
{
    count1=0;
    if(flag1==0)
     {
       flag1=1;
       HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); //灭灯
      }
      else
      {
        flag1=0;
         HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); //亮灯
       }
}

5、传统按键消抖
uint8_t step=0;
switch(step)
{
   case 0:
     {
         if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET) //判断按键是否按下
         for(uint32_t i=0;i<100000;i++)
           {
             printf("按键按下");
             step=1;
            }
     }
break;
   case 1:
     {
         if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)
           {
             printf("按键释放");
             step=0;
            }
     }
break;

}
6、状态机消抖
uint32_t count=0;
uint8_t step=0;
switch(step)
{
   case 0:
    {
      if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET) //判断按键是否按下
       {
          count++;
          if(count>=100000)
             {
               count=0;
               printf("按键按下");
               step=1;
              }
       }
    else
       {
         count=0;
        }
     }
  break;

case 1:
{
     if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)
      {
           step=0;
          printf("按键释放")
      }
}
}






回复

使用道具 举报

24

主题

355

帖子

1677

积分

版主

Rank: 3Rank: 3

积分
1677
QQ
发表于 2021-4-22 09:55:06 | 显示全部楼层
不错,总结的很细致
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表