mask是什么意思| 反复感冒是什么原因引起的| 切除阑尾对身体有什么影响| 二百五是什么意思| 狗舔人是什么意思| 黑是什么生肖| 眼睛发涩是什么原因导致的| 倒贴是什么意思| 晚上睡觉遗精是什么原因| 腰闪了是什么症状| 夏天吃什么菜| 鲱鱼在中国叫什么鱼| 农村补贴什么时候发放| 人心不足蛇吞象是什么意思| 白带黄是什么原因| 牙根发炎吃什么药| 凉拌菜用什么醋最好| 抻是什么意思| 吃金针菇有什么好处| 睾酮低有什么影响| 吃什么可以长胖| 公鸡的尾巴像什么| 舌苔发苦是什么原因| 最小的单位是什么| 氟哌酸是什么药| 11月15日出生是什么星座| 苏慧伦为什么不老| 幽门螺旋杆菌感染吃什么药| 花钱是什么意思| 甜菜什么意思| 421是什么意思| 成吉思汗姓什么| 什么都不放的冬瓜清汤| dostinex是什么药| 血尿是什么原因引起的男性| 辅助什么意思| 骨膜炎吃什么药| 吃什么化痰| 中焦湿热吃什么中成药| 整编师和师有什么区别| 副肾是什么药名| 海肠是什么| 手抖什么原因| 上午十点多是什么时辰| 回族为什么不吃猪肉| 槟榔什么味道| 恋爱观是什么| 湿气重用什么泡脚最好| 1952属什么生肖| 甲肝抗体阳性代表什么| 尿精是什么原因造成的| 鞭长莫及是什么意思| 脸部出油多是什么原因| 山鬼是什么| 什么样的教诲| 什么书买不到| 高血压吃什么助勃药好| 高考什么时候恢复| 牛仔外套搭配什么裤子好看| 乳腺瘤是什么引起的| 弟弟的老婆叫什么| 茄子能治什么病| c反应蛋白高是什么意思| 榴莲不可以和什么食物一起吃| 升是什么意思| 薏米和什么一起煮粥最好| 神态是什么意思| 咳嗽想吐是什么原因| 血脂高可以吃什么水果| 共产主义社会是什么样的社会| 敌是什么生肖| 欺骗餐是什么意思| 心脏病人吃什么水果好| 脑电图能检查出什么疾病| 日本投降是什么时候| 奥氮平片是什么药| 为什么老是头晕| 霏是什么意思| 肛门疼痛用什么药| 溺爱什么意思| pass掉是什么意思| 霜降是什么季节| 怀孕甲减对孩子有什么影响| 龛影是什么意思| 什么是风寒感冒| 千年修炼是什么生肖| 巨蟹是什么象星座| 男朋友昵称叫什么好听| 护士是什么专业| 董酒是什么香型| 用热毛巾敷眼睛有什么好处| 肺气肿吃什么药最有效| 花椒水泡脚有什么好处| 胆红素三个指标都高是什么原因| 女人什么时候容易怀孕| 心动过速吃什么药| 胃潴留是什么意思| 鸡和什么属相最配对| 总胆固醇高有什么症状| 潜血阳性是什么意思| 专情是什么意思| 脑血栓适合吃什么水果| 鹿鞭是什么| 一箭双雕是指什么生肖| 九五年属什么| 狗狗为什么会咬人| 臭宝是什么意思| 房颤是什么病| 举足轻重是什么意思| 什么是涤纶面料| 九月九日是什么节日| 3月21日什么星座| 女性尿道出血是什么原因引起的| 甲类传染病指什么| 岁寒三友是指什么| 寄生虫是什么意思| 豆绿色配什么颜色好看| 手指甲变黑是什么原因| 肛门瘙痒是什么问题| 拔节是什么意思| 尿频繁吃什么药最见效| 心血管疾病做什么检查| 正月十九是什么日子| 生理是什么意思| 吃什么可以缓解孕吐恶心| 丫丫的老公叫什么| 公积金缴存基数是什么意思| 荨麻疹不能吃什么食物| 2003是什么年| 月经前尿频是什么原因| 空亡是什么意思| 犬瘟吃什么药管用| 什么叫高血压| 台湾为什么叫4v| 格格不入什么意思| 承受是什么意思| 五六天不拉大便是什么原因| 人模狗样是什么生肖| 九九重阳节是什么意思| 扁桃体肥大是什么原因造成的| 真言是什么意思| c1e驾照能开什么车| 再接再厉什么意思| 久违什么意思| 个子矮吃什么才能长高| 爷们儿大结局是什么| 吃什么会死| vertu手机为什么那么贵| 菏泽有什么好玩的地方| 乳糖不耐受吃什么奶粉| 留守儿童是什么意思| 妈妈的爸爸叫什么| 什么饮料不含糖| 桂圆什么时候上市| 胃溃疡吃什么药好| 梦见鼻子出血是什么意思| 道和集团是干什么的| 什么原因引起荨麻疹| 嘴边长痘痘是什么原因| 三言两语是什么意思| 吃什么水果对心脏好| 摩羯座什么性格| esp是什么意思| 女大四岁有什么说法| 三月底是什么星座| 容易脸红的人是什么原因| 黄酒是什么| 卵巢多囊是什么原因造成的| naco是什么牌子| 灰指甲医院挂什么科| 幽门螺旋杆菌感染有什么症状| 碘酒和碘伏有什么区别| 请丧假需要什么证明| 7月31号是什么星座| 大象的鼻子为什么那么长| 火星上有什么| 头皮屑多是什么原因怎么去除| 6.17什么星座| 丙辰日是什么意思| 开塞露是什么| 你喜欢吃什么用英语怎么说| 总梦到一个人说明什么| 疯癫是什么意思| 慢性胃炎吃什么药| 心急吃不了热豆腐什么意思| 什么鸟叫声最好听| 喝什么补肾| 什么的嘴| 内啡肽是什么| 没什么没什么| 脂蛋白是什么| 吃什么维生素对眼睛好| 梦见鬼是什么意思| 报复是什么意思| 萝卜什么时候种| 表姐的儿子叫什么| mg是什么单位| 高胰岛素血症是什么病| 肺活量是什么意思| 子宫内膜增厚吃什么药| 南明为什么打不过清朝| bpa是什么材料| 鸟字旁与什么有关| 00年属什么的| 外阴溃烂用什么药| o型血的人是什么性格| 一 什么云| 分泌性中耳炎吃什么药| 认贼作父是什么意思| 一代明君功千秋是什么生肖| 煲鸡汤放什么材料好| c02是什么意思| 梦见摘桑葚是什么意思| speedo是什么牌子| 镍是什么金属| 靛青色是什么颜色| 减肥最好的办法是什么| 什么有作为| 爽肤水是什么| 孜然是什么植物| 什么样的春光| 二氧化钛是什么东西| 脑梗可以吃什么水果| 股票杠杆是什么意思| 六月六是什么日子| 1215是什么星座| 十月初三是什么星座| 301医院院长什么级别| 一个虫一个圣念什么| 04年属猴的是什么命| hpv16是什么| 遨游是什么意思| 须眉什么意思| 就寝是什么意思| 女人大把掉头发是什么原因| 什么不| 种小麦用什么肥料好| 为什么叫大姨妈| 尿常规挂什么科| 不明觉厉是什么意思| 牛肉什么馅的饺子好吃| 佩戴狼牙有什么好处| longines是什么牌子| 海马是什么类动物| 玉镯子断了有什么预兆| 什么叫发物| 间接胆红素偏高是什么意思| 春晓描写的是什么季节| 梦见下大雨是什么意思| 五月五日什么星座| npv是什么病毒| 宇宙的尽头是什么| 港澳通行证签注是什么意思| 什么叫做流年| 蚊子怕什么颜色| 碎银子是什么茶| 固液法白酒是什么意思| 肺气不足吃什么药| 马天宇是什么民族| 脑瘤到什么程度才会死| 这是什么字| 天喜星是什么意思| 长期吃泡面有什么危害| 凝聚力是什么意思| 百度
打印
[APM32E0]

走近低调的“单车猎人”:让共享单车回归共享

[复制链接]
116|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuyu40|  楼主 | 2025-8-1 16:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请开发板#
? 极海APM32E030R芯片是32 位 Arm?Cortex?-M0+内核,最高工作频率:72MHz,Flash 存储器:64KB,SRAM 存储器:8KB
开发方式如下:
1)连接 H2/H3 或 H4/H5 可使用板载 Geehy LINK 进行串口调试
2)断开 Geehy LINK 连接后,第三方调试工具可通过 JP1 连接仿真器进行 MCU 烧录调试
3)Type-C(数据通信)直接连接 PC 端进行 MCU 仿真调试
4)使用keil v 5.36编译环境
到官网找到如下文件:

使用的操作系统为win10(GEEHY-LINK(WinUSB)设备不支持在 Windows7 上免驱使用)假定已经安装keil (版本 V5.29 以上),安装Geehy.APM32E030_DFP.1.0.3也就是mcu支持包,阅读用户手册,按照指示连接硬件;该固件基于 CMSIS-DAP V1,会使用 USB 枚举成一个 HID 和 MSC 设备。
使用 USB 线成功连接电脑后,设备管理器上会出现:CMSIS DAP winUSB

在 keil 软件上配置选择使用 SW 模式或者 JTAG 模式。点击“Options for Target” ,在打开的界面中选择“Debug”,然后再选择“CMSIS-DAP Debugger”,如图 :

点击“Settings”按钮进入设置界面,选择 SWD 或者 JTAG 模式以及频率:

无刷直流电机的换向控制原理
如下图示例极通电导通时, 电流由 A 极流向 C 极, 这样形成了定子合成磁场. 永磁体转子会根据定子合成磁场的方向进行旋转. 通过对三相交替通电 (A+ C-) , (A+ B-) , (C+ B-), (C+ A-) , (B+ A-) , (B+ C-) , 完成磁场旋转. 每一步只改变其中一极的导通状态, 共六步来完成定子合成磁场旋转一周, 即每步磁场旋转 60° —— 该方法被称为 “六步换向法”. 如下图所示六步换向法的基本原理:

为了实现定子磁场的旋转 (即六步换向), 需要交替有序地导通定子的三相电极. 而实现三相电极交替导通的驱动电路为三相全桥逆变电路, 控制上按照六步换向时序进行控制;

完成以上配置之后测试6开关驱动工程,工程使用了定时器模块原理如下:

定时器可以看作三个模块组合,第一定时器基本功能,完成定时器周期性计数;第二定时器输出PWM功能,将计数值不断与比较寄存器做比较产生6根引脚的PWM输出信号控制无刷直流电机(或者其他类型交流电机)功率开关;第三定时器捕获功能,可以接HALL传感器等用来检测转子实时位置;在本工程中完成了6开关信号驱动,所以需要设置定时器1、2模块,代码如下:
    GPIO_Config_T GPIO_ConfigStruct;
    TMR_TimeBase_T baseConfig;
    TMR_OCConfig_T OCcongigStruct;
    TMR_BDTInit_T BDTConfig;
    //定义需要的结构体变量
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_TMR1);
    RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA | RCM_AHB_PERIPH_GPIOB);
      //打开外设时钟
    /* 设置定时器1通道1引脚TMR1_CH1 */
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_8, GPIO_AF_PIN2);
    /* TMR1_CH2 */
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_9, GPIO_AF_PIN2);
    /* TMR1_CH3 */
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_PIN2);
    /* 设置刹车信号引脚*/
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_6, GPIO_AF_PIN2);
    /* TMR1_CH1N */
    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_7, GPIO_AF_PIN2);
    /* TMR1_CH2N */
    GPIO_ConfigPinAF(GPIOB, GPIO_PIN_SOURCE_0, GPIO_AF_PIN2);
    /* TMR1_CH3N */
    GPIO_ConfigPinAF(GPIOB, GPIO_PIN_SOURCE_1, GPIO_AF_PIN2);
    /* Config TMR1 GPIO for complementary output PWM */
    GPIO_ConfigStruct.pin     = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_6;
    GPIO_ConfigStruct.mode    = GPIO_MODE_AF;
    GPIO_ConfigStruct.outtype = GPIO_OUT_TYPE_PP;
    GPIO_ConfigStruct.speed   = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOA, &GPIO_ConfigStruct);
    GPIO_ConfigStruct.pin = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_Config(GPIOB, &GPIO_ConfigStruct);
    /* 设置定时器1工作模式TMR1 */
    baseConfig.clockDivision     = TMR_CKD_DIV1;
    baseConfig.counterMode       = TMR_COUNTER_MODE_UP;
    baseConfig.div               = 0;
    baseConfig.period            = 2047;
    baseConfig.repetitionCounter = 0;
    TMR_ConfigTimeBase(TMR1, &baseConfig);
    /* 设置定时器输出通道工作模式*/
    OCcongigStruct.OC_Mode         = TMR_OC_MODE_TMRING;
    OCcongigStruct.Pulse           = 1023;
    OCcongigStruct.OC_Idlestate    = TMR_OCIDLESTATE_SET;
    OCcongigStruct.OC_OutputState  = TMR_OUTPUT_STATE_ENABLE;
    OCcongigStruct.OC_Polarity     = TMR_OC_POLARITY_HIGH;
    OCcongigStruct.OC_NIdlestate   = TMR_OCNIDLESTATE_SET;
    OCcongigStruct.OC_OutputNState = TMR_OUTPUT_NSTATE_ENABLE;
    OCcongigStruct.OC_NPolarity    = TMR_OC_NPOLARITY_HIGH;
    TMR_OC1Config(TMR1, &OCcongigStruct);
    OCcongigStruct.Pulse = 511;
    TMR_OC2Config(TMR1, &OCcongigStruct);
    OCcongigStruct.Pulse = 255;
    TMR_OC3Config(TMR1, &OCcongigStruct);
    /* 用在电机控制上下桥臂需要设置死区时间等 */
    BDTConfig.RMOS_State      = TMR_RMOS_STATE_ENABLE;
    BDTConfig.IMOS_State      = TMR_IMOS_STATE_ENABLE;
    BDTConfig.lockLevel       = TMR_LOCK_LEVEL_OFF;
    BDTConfig.deadTime        = 0x01;
    BDTConfig.breakState      = TMR_BREAK_STATE_DISABLE;
    BDTConfig.breakPolarity   = TMR_BREAK_POLARITY_HIGH;
    BDTConfig.automaticOutput = TMR_AUTOMATIC_OUTPUT_ENABLE;
    TMR_ConfigBDT(TMR1, &BDTConfig);
    /* Timer1 Commutation Interrupt */
    TMR_EnableInterrupt(TMR1, TMR_INT_CCU);
    NVIC_EnableIRQ(TMR1_BRK_UP_TRG_COM_IRQn);
    /* Enable Capture Compare Preload Control */
    TMR_EnableCCPreload(TMR1);
    TMR_EnablePWMOutputs(TMR1);
    TMR_Enable(TMR1);
    while (1)
    {
        /* 每隔1s产生com事件*/
        Delay_ms(100);
        TMR_GenerateEvent(TMR1, TMR_EVENT_CCU);
}
在com中断函数中进行6拍换相,根据下图所示的开关切换方式进行换相;

void TMR1_BRK_UP_TRG_COM_IRQHandler(void)
{
    /* The interrupt flag bit must be cleared first. */
    /* 清除TMR1 COM中断标志位*/
    TMR_ClearIntFlag(TMR1, TMR_INT_CCU);
    PWMStep++;
    switch (PWMStep)
    {
        case 1:
            /* configuration: Channel1 and Channel2 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_1, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_2, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_3);
            break;
        case 2:
            /* configuration: Channel2 and Channel3 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_2, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_3, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_3);
            break;
        case 3:
            /* configuration: Channel3 and Channel1 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_3, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_1, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_3);
            break;
        case 4:
            /* configuration: Channel1 and Channel2 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_1, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_2, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_3);
            break;
        case 5:
            /* configuration: Channel2 and Channel3 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_2, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_3, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_3);
            break;
        case 6:
            /* configuration: Channel3 and Channel1 PWM1 Mode */
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_3, TMR_OC_MODE_PWM1);
            TMR_SelectOCxMode(TMR1, TMR_CHANNEL_1, TMR_OC_MODE_PWM1);
            /* configuration: Channel1 */
            TMR_EnableCCxChannel(TMR1, TMR_CHANNEL_1);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_1);
            /* configuration: Channel2 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_2);
            TMR_DisableCCxNChannel(TMR1, TMR_CHANNEL_2);
            /* configuration: Channel3 */
            TMR_DisableCCxChannel(TMR1, TMR_CHANNEL_3);
            TMR_EnableCCxNChannel(TMR1, TMR_CHANNEL_3);
            PWMStep = 0;
            break;
        default:
            PWMStep = 0;
            break;
    }
}
开发板接到逻辑分析仪进行检测,接线如图:

逻辑分析仪波形如下:



发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

52

帖子

1

粉丝
黑芝麻不能和什么一起吃 120是什么电话 什么的玉米 白带呈绿色是什么原因 酒干倘卖无是什么意思
梨花是什么颜色的 芥末油是什么提炼出来的 荷叶有什么功效和作用 肝火旺盛吃什么中成药 人有三急指的是什么
什么降血脂效果最好的 冒冷汗是什么原因 婴儿什么时候可以吃盐 医生说宝宝趴着在暗示着什么 理性是什么意思
大骨节病是一种什么病 套话是什么意思 50肩是什么意思 粟是什么农作物 大名鼎鼎的鼎是什么意思
事业是什么意思fenrenren.com 美国白宫是干什么的hcv8jop1ns3r.cn 什么的杏花hcv9jop0ns8r.cn 熟的反义词是什么hcv8jop2ns2r.cn 腊月是什么生肖adwl56.com
三月十九是什么星座hcv8jop6ns5r.cn 吃牛油果有什么好处hcv8jop7ns7r.cn 耳聋吃什么药hcv9jop1ns3r.cn 缺钙吃什么食物hcv8jop5ns1r.cn 海带属于什么植物hcv8jop6ns9r.cn
悠着点是什么意思hcv9jop0ns4r.cn 孩子白细胞高是什么原因hcv8jop5ns6r.cn 用黄瓜敷脸有什么功效hcv9jop1ns3r.cn 骄阳似火是什么意思hcv8jop4ns8r.cn 中国是什么人种hcv9jop7ns5r.cn
过敏性鼻炎有什么症状hcv7jop6ns4r.cn 用甲硝唑栓有什么反应hcv7jop7ns0r.cn 乳腺结节不能吃什么食物jasonfriends.com 交警罚款不交有什么后果hcv9jop0ns0r.cn 变节是什么意思hcv8jop9ns9r.cn
百度