您尚未登录。

#2 ST/STM8/STM8S/STM8L » 请教stm8s003 pwm捕获的问题 » 2019-12-03 11:49:01

钱泰多
回复: 1

我想用stm8s003来捕获7路pwm,  这个理论上能做到吗,可以轮流来捕获。对stm8 不熟,知情的人请赐教!谢谢大佬

#3 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-05 14:10:17

问题解决了,设置输出后,执行TIM_DeInit(TIM3),再设置输入捕获就行了
                                        Timer3_Init(19999,71);
                                   
                                        TIM_SetCompare1(TIM3, 100);
                                        TIM_SetCompare2(TIM3, 100);
                                        TIM_SetCompare3(TIM3, 100);
                                        TIM_SetCompare4(TIM3, 100);
                                   
                                                    TIM_DeInit(TIM3);

                                        TIM3_Cap_Init(0XFFFF,72-1);

#4 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-05 11:49:34

nuvoton 说:

如果上电就进入输入捕获就可以的话,那说明输入捕获初始化没问题咯,那么设置成输出再设置成输入是否还可以呢?就单纯自己给脉冲 不用电机的。自己用杜邦线怼几下咯。 有一种情况就是输出脉冲后,MCU进入输入捕获这个切换需要一点点时间。而电机响应太快。

我现在不用电机,就怼着一个持续的pwm用来测试捕获。发现上电就设置输入捕获没问题。但是设置成输出再设置输入捕获就不行了。不知道什么原因

#5 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-05 11:47:51

awfans 说:

看了下,感觉怎么这么优秀的一个用库函数一个用寄存器=。=

库函数是我自己的。寄存器是网上找的

#6 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-04 18:12:04

如果只是开机设置成捕获就没问题。设置成输出再设置成捕获就不行了。这是重点!!!!

#7 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-04 18:10:54

这是设置输入捕获的代码配置

TIM3_Cap_Init(0XFFFF,72-1);

void TIM3_Cap_Init(u16 arr,u16 psc)
{        
    RCC->APB1ENR|=1<<1;       //tim3 ʱÖÓʹÄÜ
    RCC->APB2ENR|=1<<2;        //PORTAʱÖÓʹÄÜ
    RCC->APB2ENR|=1<<3;        //PORTBʱÖÓʹÄÜ

    RCC->APB2ENR|=1<<0;        //AFIOʱÖÓʹÄÜ
//    AFIO->MAPR|=2<<8;        //TIM2????

    GPIOA->CRL&=0X00FFFFFF;    //PA6,PA7
    GPIOA->CRL|=0X88000000;    //PA6,PA7
    GPIOA->ODR&=0xFFFFFF3F;        //PA6 PA7 ÏÂÀ­
   
    GPIOB->CRL&=0xFFFFFF00;    //PB0,PB1
    GPIOB->CRL|=0x00000088;    //PB0,PB1
    GPIOB->ODR&=0xFFFFFFFC;        //PB0,PB1 ÏÂÀ­
    TIM3->ARR=arr;
    TIM3->PSC=psc;

    //CH1
    TIM3->CCMR1|=1<<0;        //CC1S=01     Ñ¡ÔñÊäÈë¶Ë IC1Ó³Éäµ½TI1ÉÏ
    TIM3->CCMR1|=1<<4;         //IC1F=0001 ÅäÖÃÊäÈëÂ˲¨Æ÷ ÒÔFck_int²ÉÑù£¬2¸öʼþºóÓÐЧ
    TIM3->CCMR1|=0<<2;         //IC1PS=00     ÅäÖÃÊäÈë·ÖƵ£¬²»·ÖƵ
    TIM3->CCER|=0<<1;         //CC1P=0        ÉÏÉýÑز¶»ñ
    TIM3->CCER|=1<<0;         //CC1E=1         ÔÊÐí²¶»ñ¼ÆÊýÆ÷µÄÖµµ½²¶»ñ¼Ä´æÆ÷ÖÐ

    //CH2
    TIM3->CCMR1|=1<<8;        //CC2S=01     ͬÉÏ
    TIM3->CCMR1|=1<<12;     //IC2F=0001 ..
    TIM3->CCMR1|=0<<10;     //IC2PS=00     ..
    TIM3->CCER|=0<<5;         //CC2P=0      ..
    TIM3->CCER|=1<<4;         //CC2E=1       ..

    //CH3
    TIM3->CCMR2|=1<<0;        //CC3S=01     ..
    TIM3->CCMR2|=1<<4;         //IC3F=0001 ..
    TIM3->CCMR2|=0<<2;         //IC3PS=00     ..
    TIM3->CCER|=0<<9;         //CC3P=0      ..
    TIM3->CCER|=1<<8;         //CC3E=1       ..

    //CH4
    TIM3->CCMR2|=1<<8;        //CC4S=01     ..
    TIM3->CCMR2|=1<<12;     //IC4F=0001 ..
    TIM3->CCMR2|=0<<10;     //IC4PS=00     ..
    TIM3->CCER|=0<<13;         //CC4P=0      ..
    TIM3->CCER|=1<<12;         //CC4E=1       ..

    //ÖжÏʹÄÜ
    TIM3->DIER|=1<<1;       //ÔÊÐí²¶»ñ1ÖжÏ
    TIM3->DIER|=1<<2;       //ÔÊÐí²¶»ñ2ÖжÏ
    TIM3->DIER|=1<<3;       //ÔÊÐí²¶»ñ3ÖжÏ
    TIM3->DIER|=1<<4;       //ÔÊÐí²¶»ñ4ÖжÏ

    TIM3->DIER|=1<<0;       //ÔÊÐí¸üÐÂÖжÏ
    TIM3->CR1|=0x01;        //ʹÄܶ¨Ê±Æ÷3


}


void main()
{
while(1)
{

    if(TIM3CH1_CAPTURE_STA&0X80)            //???????????
        {
            temp1=TIM3CH1_CAPTURE_STA&0X3F;
            temp1*=65536;                        //??????
            temp1+=TIM3CH1_CAPTURE_Date2;       
            temp1-=TIM3CH1_CAPTURE_Date1;        //?????????
//if (temp1 != 65536)
            printf("TIM3_CH1_HIGH:%d us\r\n",temp1);        //?????????
            TIM3CH1_CAPTURE_Date1=0;
            TIM3CH1_CAPTURE_STA=0;                //???????
        }

        if(TIM3CH2_CAPTURE_STA&0X80)            //???????????
        {
            temp2=TIM3CH2_CAPTURE_STA&0X3F;
            temp2*=65536;                        //??????
            temp2+=TIM3CH2_CAPTURE_Date2;       
            temp2-=TIM3CH2_CAPTURE_Date1;        //?????????
//if (temp2 != 65536)           
            printf("TIM3_CH2_HIGH:%d us\r\n",temp2);        //?????????
            TIM3CH2_CAPTURE_Date1=0;
            TIM3CH2_CAPTURE_STA=0;                //???????
        }

        if(TIM3CH3_CAPTURE_STA&0X80)            //???????????
        {
            temp3=TIM3CH3_CAPTURE_STA&0X3F;
            temp3*=65536;                        //??????
            temp3+=TIM3CH3_CAPTURE_Date2;       
            temp3-=TIM3CH3_CAPTURE_Date1;        //?????????
//if (temp3 != 65536)           
            printf("TIM3_CH3_HIGH:%d us\r\n",temp3);        //?????????

            TIM3CH3_CAPTURE_Date1=0;
            TIM3CH3_CAPTURE_STA=0;                //???????
        }

        if(TIM3CH4_CAPTURE_STA&0X80)            //???????????
        {
            temp4=TIM3CH4_CAPTURE_STA&0X3F;
            temp4*=65536;                        //??????
            temp4+=TIM3CH4_CAPTURE_Date2;       
            temp4-=TIM3CH4_CAPTURE_Date1;        //?????????
//if (temp4 != 65536)           
            printf("TIM3_CH4_HIGH:%d us\r\n",temp4);        //?????????
            TIM3CH4_CAPTURE_Date1=0;
            TIM3CH4_CAPTURE_STA=0;                //???????
        }

}
}

#8 Re: Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-04 18:09:31

这个是设置pwm输出的配置    TIM_SetCompare1(TIM3, 100);  可以正常输出pwm

Timer3_Init(19999,71);

void Timer3_Init(u16 arr,u16 psc)
{

    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
   
  /* GPIOB Configuration: TIM3 CH1 (PA6) and TIM3 CH2 (PA7) */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* GPIOB Configuration: TIM3 CH3 (PB0) and TIM3 CH4 (PB1) */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

   
    TIM_TimeBaseStructure.TIM_Period = arr;
    TIM_TimeBaseStructure.TIM_Prescaler =psc;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
   
   
   
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

    TIM_OC1Init(TIM3, &TIM_OCInitStructure);
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);
    TIM_OC3Init(TIM3, &TIM_OCInitStructure);
    TIM_OC4Init(TIM3, &TIM_OCInitStructure);


    TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable);
    TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);
    TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Disable);


    TIM_Cmd(TIM3, ENABLE);


}

#10 Cortex M0/M3/M4/M7 » stm32f103 设置pwm输出后马上设置pwm捕获不成功 » 2019-09-04 18:06:37

钱泰多
回复: 10

情况是这样,我会给一个电机发一个周期pwm脉冲,然后电机给我回20个周期pwm。现在已经实现发pwm给电机了,电机也收到了,也回复20个pwm给我了(示波器量到有),但是我设置成pwm后不能捕获到

#11 ESP32/ESP8266 » ESP32 freertos 调整栈空间 » 2019-06-15 12:09:42

钱泰多
回复: 2

请教大神创建任务的栈空间不够的,知道哪里可以调整的吗?

#12 Re: Cortex M0/M3/M4/M7 » stm32F103定时器问题 » 2019-03-22 18:34:30

Gentlepig 说:
Wufeng 说:

没有该复用功能的引脚不可以

试了下,可以在定时器更新中断和比较中断里分别置位/复位IO口,达到自己指定IO口PWM输出。

挺新奇的做法,学习了

#13 Re: ESP32/ESP8266 » ESP32不停地重启 » 2019-03-18 13:00:36

同样的程序烧到官方demo板看看有没有问题。如果没问题,那应该是硬件问题。有问题就是软件问题

#14 Re: Cortex M0/M3/M4/M7 » stm32F103定时器问题 » 2019-03-18 12:58:11

是可以的,定时器中断和pwm输出并不冲突,只是频率只能设置一样的

#15 Cortex M0/M3/M4/M7 » stm32F103定时器问题 » 2019-03-08 10:47:32

钱泰多
回复: 6

timer1 能同时用来产生定时器中断 和  输出2路pwm吗?

#16 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-18 16:42:41

晕哥 说:
钱泰多 说:
basicdev 说:

现在大公司都用非常便宜的价格倾销AI音箱产品了,小公司做这个还有空间吗?

做跟他们一样的当然做不过,要做出自己的特色才有出路~

那预定一台 ^_^

好好,等我们团队做好了送你一台,哈哈

#17 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-18 14:53:16

basicdev 说:
钱泰多 说:
晕哥 说:

做故事机这个方案没有优势, 市场上估计也不会有人做吧。

溜了一圈,发现还是只能esp32做,中断唤醒+wifi+bt

现在大公司都用非常便宜的价格倾销AI音箱产品了,小公司做这个还有空间吗?

做跟他们一样的当然做不过,要做出自己的特色才有出路~

#18 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-18 13:46:03

晕哥 说:
钱泰多 说:
晕哥 说:

全志 F1C100s + ESP8089, 资源比较丰富,但是BOM也上来了.

F1C100s最近卖到了12.5元了

这个方案有人做过故事机吗

做故事机这个方案没有优势, 市场上估计也不会有人做吧。

溜了一圈,发现还是只能esp32做,中断唤醒+wifi+bt

#19 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-18 12:13:10

晕哥 说:

全志 F1C100s + ESP8089, 资源比较丰富,但是BOM也上来了.

F1C100s最近卖到了12.5元了

这个方案有人做过故事机吗

#20 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-10 16:39:38

晕哥 说:
钱泰多 说:
晕哥 说:

W600 了解一下: https://whycan.cn/t_1928.html

据说功耗比 ESP8266 高些

我看了,主频太低了,1mbyte flash应该做不了故事机

存代码肯定够了, 音频资源文件存TF卡.

esp32上面的代码最后编译出来用了2.5m,解码库什么的太多了。这个芯片做故事机不太可能,而且跑语音那些算法要很高的主频呢

#21 Re: ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-10 16:16:52

晕哥 说:

W600 了解一下: https://whycan.cn/t_1928.html

据说功耗比 ESP8266 高些

我看了,主频太低了,1mbyte flash应该做不了故事机

#22 ESP32/ESP8266 » 求推荐wifi方案做故事机 » 2018-12-10 16:10:49

钱泰多
回复: 19

想做能唤醒的故事机,目前只知道rda5981  和 esp32。  esp32  有效果但是bug很多,官方支持不给力。rda5981 不开源。大家还知道别的吗。求推荐!

#23 Re: Cortex M0/M3/M4/M7 » 关于6轴惯性模块的姿态解算问题请教 » 2018-10-23 14:44:54

我现在的思路是判断某个轴上的线性加速度持续超过一段时间后突然减小即可判断被提起

#25 Re: Cortex M0/M3/M4/M7 » 关于6轴惯性模块的姿态解算问题请教 » 2018-10-23 14:14:58

达克罗德 说:

你把这两个动作的加速度曲线画一下,然后识别一下

确实是个思路,谢谢,可以尝试

#26 Re: Cortex M0/M3/M4/M7 » 关于6轴惯性模块的姿态解算问题请教 » 2018-10-23 11:18:47

加速度,四元数,欧拉角这些我都知道怎么得到,只是 我所说的“提起”  “放下”  是一个动态的过程,有加速度变化的过程,我想知道的是如何识别这个过程,相关算法和思路

#27 Cortex M0/M3/M4/M7 » 关于6轴惯性模块的姿态解算问题请教 » 2018-10-22 17:13:20

钱泰多
回复: 14

手头想用mpu6050惯性模块,做一个识别被提起和放下的姿态识别,想请教大神们怎么做

#29 ESP32/ESP8266 » 关于dueros 数据点的问题 » 2018-09-25 20:19:11

钱泰多
回复: 2

有人知道dueros的数据点是怎么玩的吗。我想实现,通过语音例如“关机”,然后就服务器就下发控制指令。

#30 ESP32/ESP8266 » ESP32 -LyraT V4.3开发板 跑ADF example 的dueros问题 » 2018-09-05 17:34:11

钱泰多
回复: 1

头几次按rec键交互正常,按下rec键,说话,话说完后录音停止。几次过后,刚按下rec键触发录音,很快大约1秒后录音就停止了,报语音“我不太确定你说了什么”。重启又正常。不知道哪个大神有遇到过吗

#31 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-14 15:06:51

是的,我用python自带的python烧录没问题

#32 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-14 11:27:55

已经解决问题,esp32原版的编译工具链里面其实已经自带了pyhon,是不用额外下载的,只需要配置好path就可以
msys32/etc/profile.d/esp32_toolchain

这里面改成
export PATH="/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/c/windows/system32:/c/windows:/c/windows/system32/wbem:/opt/xtensa-esp32-elf/bin"

就能找到msys32/mingw32/bin里面的python了,是2.7的

自己在mingw32里更新的python是3.6的,打开串口可能有问题,估计原来的代码是用python2.7写的

#33 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-11 20:53:21

我用win7 的时候是不用装python的直接可以编译,感觉是Python的问题

#34 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-11 20:11:47

现在在家了,板子在公司,只能周一再试试了,先谢谢晕哥

#35 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-11 19:59:42

我的板子是有hello world程序的,用串口工具可以看到打印信息出来

#36 Re: ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-11 17:46:45

命令行下编译则是这样,COM4我看了驱动管理器没有错


sky@DESKTOP-FEE8B4U MSYS /g/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/examples/get-started/hello_world
$ make flash
G:/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/make/project.mk:56: esp-idf build system only supports MSYS2 in "MINGW32" mode. Consult the ESP-IDF documentation for details.
/esp-adf/esp-idf/make/project.mk:56: esp-idf build system only supports MSYS2 in "MINGW32" mode. Consult the ESP-IDF documentation for details.
Flashing binaries to serial port /COM4 (app at offset 0x10000)...
esptool.py v2.1
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/serial/serialposix.py", line 288, in open
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: '/COM4'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/esp-adf/esp-idf/components/esptool_py/esptool/esptool.py", line 2524, in <module>
    _main()
  File "/esp-adf/esp-idf/components/esptool_py/esptool/esptool.py", line 2517, in _main
    main()
  File "/esp-adf/esp-idf/components/esptool_py/esptool/esptool.py", line 2246, in main
    esp = chip_class(args.port, initial_baud)
  File "/esp-adf/esp-idf/components/esptool_py/esptool/esptool.py", line 177, in __init__
    self._port = serial.serial_for_url(port)
  File "/usr/lib/python3.6/site-packages/serial/__init__.py", line 90, in serial_for_url
    instance.open()
  File "/usr/lib/python3.6/site-packages/serial/serialposix.py", line 291, in open
    raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 2] could not open port /COM4: [Errno 2] No such file or directory: '/COM4'
make: *** [/esp-adf/esp-idf/components/esptool_py/Makefile.projbuild:55:flash] 错误 1

#37 ESP32/ESP8266 » ESP32 eclipse 编译失败 » 2018-08-11 17:44:25

钱泰多
回复: 12

17:44:06 **** Build of configuration Default for project esp-adf ****
bash G:/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/tools/windows/eclipse_make.sh flash
eclipse_make.sh has been replaced with eclipse_make.py. Check the Windows Eclipse docs for the new command.
This shell script will continue to work until the next major release.
Traceback (most recent call last):
  File "G:/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/tools/windows/eclipse_make.py", line 36, in <module>
    main()
  File "G:/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/tools/windows/eclipse_make.py", line 28, in main
    print("Running make in '%s'" % check_path(os.getcwd()))
  File "G:/RD/Pro/ESP32/official/msys32/esp-adf/esp-idf/tools/windows/eclipse_make.py", line 23, in check_path
    winpath = winpath.replace("\\", "/")  # make consistent with forward-slashes used elsewhere
TypeError: a bytes-like object is required, not 'str'

17:44:07 Build Finished. 0 errors, 0 warnings. (took 385ms)

#38 Re: ESP32/ESP8266 » ESP32_LyraT 运行 dueros » 2018-08-09 17:51:42

谢谢晕哥,那我试试看看能不能要到

#42 ESP32/ESP8266 » ESP32_LyraT 运行 dueros » 2018-08-08 15:32:24

钱泰多
回复: 8

买了开发板ESP32_LyraT,看他的用户手册上是可以语音唤醒的,跑了官方adf的dueros例程,短按按键rec再说话是可以语音交互,但是用手册里的唤醒词没有反应,有大神知道怎么语音唤醒吗?还是我用的例程不对呢?

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn