首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个in参数c

两个in参数c
EN

Stack Overflow用户
提问于 2015-05-13 20:33:50
回答 2查看 72关注 0票数 1

我正在努力一次启用多个PWM,我不想复制粘贴代码6次,但我有问题来启用6个不同的PWM,工作的代码是:

代码语言:javascript
复制
    void pwmPinChoices(void){

    pwm_channel_disable(PWM, PWM_CHANNEL_7);
    pwm_pin6_instance.ul_prescaler = PWM_CMR_CPRE_CLKA;
    pwm_pin6_instance.ul_period = 100;
    pwm_pin6_instance.ul_duty = 50;
    pwm_pin6_instance.channel = PWM_CHANNEL_7;
    pwm_channel_init(PWM, &pwm_pin6_instance);
    pio_set_peripheral(PIOC, PIO_PERIPH_B, PIO_PC24B_PWML7);
    pwm_channel_enable(PWM, PWM_CHANNEL_7);
}

我希望能够更改pwm_pinx_instance和pwm_channel_x,我尝试使用数组,但它不起作用。

我尝试的代码是:

代码语言:javascript
复制
    void pwmChoices(void){
    char ChlArr = [0, 1, 4, 5, 6, 7];
    char PinArr = [34, 36, 6, 7, 8, 9];

    for(int i = 0; i < 6; i++){
    pwm_channel_disable(PWM, PWM_CHANNEL_ChlArr[i]);
    pwm_PinArr[i]_instance.ul_prescaler = PWM_CMR_CPRE_CLKA;
    pwm_PinArr[i]_instance.ul_period = 100;
    pwm_PinArr[i]_instance.ul_duty = 50;
    pwm_PinArr[i]_instance.channel = PWM_CHANNEL_ChlArr[i];
    pwm_channel_init(PWM, &pwm_PinArr[i]_instance);
    pio_set_peripheral(PIOC, PIO_PERIPH_B, PIO_PC24B_PWMLChlArr[i]);
    pwm_channel_enable(PWM, PWM_CHANNEL_ChlArr[i]);
}

但是在这段代码中,我得到了很多错误,说明函数是未声明的。

EN

回答 2

Stack Overflow用户

发布于 2015-05-13 20:41:01

如果你函数看起来像这样

代码语言:javascript
复制
void pwm_pin6_instance ( void )

然后,您可以声明一个数组

代码语言:javascript
复制
void (*pwm_PinArr_instance[7]) (void);

并初始化它:(&符号是可选的)

代码语言:javascript
复制
pwm_PinArr_instance[0] = &pwm_pin0_instance;
pwm_PinArr_instance[1] = &pwm_pin1_instance;
pwm_PinArr_instance[2] = &pwm_pin2_instance;
pwm_PinArr_instance[3] = &pwm_pin3_instance;
pwm_PinArr_instance[4] = &pwm_pin4_instance;
pwm_PinArr_instance[5] = &pwm_pin5_instance;
pwm_PinArr_instance[6] = &pwm_pin6_instance;

然后,您可以使用数组

代码语言:javascript
复制
 pwm_channel_init(PWM, pwm_PinArr_instance[i]);

编辑

深入研究您的代码,我认为您必须学习一些有关数组的知识。我猜你在想,对于i=0来说,PWM_CHANNEL_ChlArr[i]的翻译应该是PWM_CHANNEL_0

在编译时,数组值不能替换为变量名。

花时间学习数组并学习如何使用它们。

票数 1
EN

Stack Overflow用户

发布于 2015-05-13 20:42:17

它是

代码语言:javascript
复制
char ChlArr[] = {0, 1, 4, 5, 6, 7}
char PinArr[] = {34, 36, 6, 7, 8, 9};

而不是

代码语言:javascript
复制
char ChlArr = [0, 1, 4, 5, 6, 7];
char PinArr = [34, 36, 6, 7, 8, 9];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30214927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档