研发之路第五条———PWM的配置与输出其二(NRF52832筋膜枪研发)

鄙人才疏学浅,如有看不入眼的代码和见解,烦请各位指教。

回放重启的配置

我们先看一下回放重启如何配置。

static nrf_drv_pwm_t m_pwm0 = NRF_DRV_PWM_INSTANCE(0);
static nrf_drv_pwm_t m_pwm1 = NRF_DRV_PWM_INSTANCE(1);
static nrf_drv_pwm_t m_pwm2 = NRF_DRV_PWM_INSTANCE(2);

// This is for tracking PWM instances being used, so we can unintialize only
// the relevant ones when switching from one demo to another.
#define USED_PWM(idx) (1UL << idx)
static uint8_t m_used = 0;


static uint16_t const              m_demo1_top  = 10000;
static uint16_t const              m_demo1_step = 200;
static uint8_t                     m_demo1_phase;
static nrf_pwm_values_individual_t m_demo1_seq_values;
static nrf_pwm_sequence_t const    m_demo1_seq =
{
    .values.p_individual = &m_demo1_seq_values,
    .length              = NRF_PWM_VALUES_LENGTH(m_demo1_seq_values),
    .repeats             = 0,
    .end_delay           = 0
};

values.p_common为回放的序列。

length为回放长度。

repeats为重复次数

end_delay为是否需要附带周期。

因为repeats和delay这些内容我们已经配置过了,可以配置为0,其他的都可以按照例程仿写,不过是换个名称而已。那么我们的快速启动就如图所示了,具体可以添加哪些使其减少bug和更加方便,就不多说了,这只是一段测试代码,具体还是要大家自己尝试。

快速配置PWM数据

void update_pwm(int16_t duty_cycle)
{
    m_seq_values = duty_cycle;
    nrf_drv_pwm_simple_playback(&m_pwm0, &m_seq, 1, 0);

}

完成了pwm的配置,接下来我们了解一下如何处理电机的堵转保护和电机加压功能,在这里浅显的回答下,堵转就是检测在超过一个比较大的电压数值之后,将mcu停止进入休眠,而加压就是检测到电压降低后在进行增加装载值的操作或者是直接根据当前应该处于哪个压力值来判断。后续了解到adc时会说到这个部分。

if(adcV >= 80 && mVENDOR_SYS_RUN.key_for_open != 0)
{
    mVENDOR_SYS_RUN.power_dect_cant_work = 1;
}

if(brake_gear != mVENDOR_RUN_INFO.brake_gear_level)
{
    NRF_LOG_INFO("brake_gear = %d,brake_gear_level = %d\r\n",brake_gear,brake_gear_level);
    mVendro_run_info.brake_gear_level = 0;
}

主函数引用

if(mVendor_run_info.power_level == 0)
{
                
Vendor_Main_brake_planel_led(mVendor_run_info.brake_gear_level,mVendor_run_info.work_mode);
    update_pwm(0x9c40,0);
}

sdk.config配置

下方还有一个同样的配置,请不要忘了。

研发类型的需求和讨论,如有需要请联系鄙人。京鸿科技有限公司邮箱:zhongweixiong@kyohoon.com,联系电话:15507589165 钟先生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值