芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
聪聪哥哥
精华 基于MM32G0001开发板+红外传感器设计的呼吸灯

首先感谢芯查查给予的白嫖MM32开发板的机会,申请的速度也很快,从申请到拿到手里不到一周的时间,物流也很快。接下来我分享一下开发的心得。

1:板子外观

该开发板板载了一个MM32的DAP仿真器,插到电脑上面可以虚拟一个U盘出来,如下图:

打开U盘里面的网址,可以轻松的查到MM32官方的资料,也是比较详细的。

开发注意事项:

首次开发MM32单片机的时候,需要在安装keil或者IAR的支持包,直接在官方下载就行,根据自己的需求下载就可以,没必要将全部的支持包安装到电脑上面。不懂的小伙伴可以查考我之前的开源文章,里面有详细的软件搭建的说明,这次就不重复表述了。

由于开发板上默认的hex文件是一个呼吸灯的程序,这里我外加了一个在芯查查商城购买的红外模块,当触发的时候呼吸灯开始工作。

软件代码如下:

1: PWM 初始化部分:

由于板载的LED灯是PA11这个IO 口,所以这里我设计的定时器的TIM1 CH2方式:IO口配置如下:

     

这里需要设计PA11的复用功能,否则CH2不能映射到此引脚。

RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE); //使能RCC_AHBENR_GPIOA

GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_2);  /* TIM1_CH4  */
   GPIO_StructInit(&GPIO_InitStruct);
   GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_11 ;
   GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);

 

初始化定时器1 为PWM

    uint32_t TimerPeriod = (RCC_GetPCLK1Freq() / 100000 ) - 1;
   /* Compute CCR2 value to generate a duty cycle at 40% for channel 2 */
   uint32_t Channel2Pulse = ((uint32_t)400 * (TimerPeriod - 1)) / 1000;
//  RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM1, ENABLE);
   TIM_TimeBaseStructInit(&TIM_TimeBaseStruct);
   TIM_TimeBaseStruct.TIM_Prescaler         = 0;
   TIM_TimeBaseStruct.TIM_CounterMode       = TIM_CounterMode_Up;
   TIM_TimeBaseStruct.TIM_Period            = TimerPeriod;
   TIM_TimeBaseStruct.TIM_ClockDivision     = TIM_CKD_DIV1;
   TIM_TimeBaseStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStruct);

 

红外检测IO口配置

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);

   /* K1->PA2 */
   GPIO_StructInit(&GPIO_InitStruct);
   GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_2;
   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStruct);

 

主程序代码如下:

int main(void)
{
    int i;
        OUTPUTFLAG = 0 ;
   PLATFORM_Init();

/*初始化 GPIO口*/        
        GPIO_Condiv();

//  TIM1_PWM_Output_Sample();

   while (1)
   {
/*启动输出*/        
        if((GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == Bit_SET))
        {        
          OUTPUTFLAG = 1 ;
        }
/*PWM输出的控制函数*/        
            if(OUTPUTFLAG == 1)
            {
                TIM1_PWM_Output_Sample();
                
                i    = i+10;
                if(i>1000)     i = 0 ;
                SetValue(i);        

                PLATFORM_DelayMS(50);
            }
        
   }
}

 

实物效果如下图:

灵动FTHR-G0001开发板
版块: 灵动微电子 开源项目
2023/08/24 19:42
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
树莓派pico 2测评 - 串口萤火工场GD32VW553-IOT测评+蓝牙串口透传树莓派pico 2测评 - 初体验【工程师经验】+ 飞线【开源】zvs142857 2.1A,3A快充 充电宝迷你
热门版块
查看更多
电子元器件
电子DIY
每日打卡
丝印反查
问技术
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计

150

收藏

分享

微信扫码
分享给好友

评论