zoukankan      html  css  js  c++  java
  • stm32f103_arduino

    原文:

    https://www.geek-workshop.com/thread-28954-1-1.html

    基于迷你强的STM32duino文章,感觉非常有价值,这小单片机做Arduino实在太强了,甩AVR的几条街,结合Maple Mini研究了一下,总结下面基础资料:

     


    0、编程语法参考
    http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/language.html

    1、引脚对应关系:
    32个GPIO,也可以用序号表达。
    <ignore_js_op> 

    序号        物理引脚
    0        PA0
    1        PA1
    2        PA2
    3        PA3
    4        PA4
    5        PA5
    6        PA6
    7        PA7
    8        PA8
    9        PA9
    10        PA10
    11        PA11
    12        PA12
    13        PA13
    14        PA14
    15        PA15
    16        PB0
    17        PB1
    18        PB2
    19        PB3
    20        PB4
    21        PB5
    22        PB6
    23        PB7
    24        PB8
    25        PB9
    26        PB10
    27        PB11
    28        PB12
    29        PB13
    30        PB14
    31        PB15
    32        PC13
    33        PC14
    34        PC15


    2、允许PWM引脚:

    序号        物理引脚
    0        PA0
    1        PA1
    2        PA2
    3        PA3
    6        PA6
    7        PA7
    8        PA8
    9        PA9
    10        PA10
    16        PB0
    22        PB6
    23        PB7


    PWM引脚简易测试程序,总共有12个PWM引脚,16bit即65536级PWM,很精密了:

    1. void setup()
    2. {
    3.         pinMode(PB0, PWM);
    4.         pinMode(PA7, PWM);
    5.         pinMode(PA6, PWM);
    6.         pinMode(PA3, PWM);
    7.         pinMode(PA2, PWM);
    8.         pinMode(PA1, PWM);
    9.         pinMode(PA0, PWM);
    10.         pinMode(PB7, PWM);
    11.         pinMode(PB6, PWM);
    12.         pinMode(PA10, PWM);
    13.         pinMode(PA9, PWM);
    14.         pinMode(PA8, PWM);
    15. }
    16. void loop()
    17. {
    18.         for (int i = 0; i < 65536; i++)
    19.         {
    20.                 delayMicroseconds(40);
    21.                 pwmWrite(PB0, i);
    22.                 pwmWrite(PA7, i);
    23.                 pwmWrite(PA6, i);
    24.                 pwmWrite(PA3, i);
    25.                 pwmWrite(PA2, i);
    26.                 pwmWrite(PA1, i);
    27.                 pwmWrite(PA0, i);
    28.                 pwmWrite(PB7, i);
    29.                 pwmWrite(PB6, i);
    30.                 pwmWrite(PA10, i);
    31.                 pwmWrite(PA9, i);
    32.                 pwmWrite(PA8, i);
    33.         }
    34. }


    PWM精度太高了,驱动LED没必要那么高,再来一个指数式适合驱动LED的,看起来亮度更线性。

    1. void setup() {
    2.   pinMode(PB0, PWM);
    3.   pinMode(PA7, PWM);
    4.   pinMode(PA6, PWM);
    5.   pinMode(PA3, PWM);
    6.   pinMode(PA2, PWM);
    7.   pinMode(PA1, PWM);
    8.   pinMode(PA0, PWM);
    9.   pinMode(PB7, PWM);
    10.   pinMode(PB6, PWM);
    11.   pinMode(PA10, PWM);
    12.   pinMode(PA9, PWM);
    13.   pinMode(PA8, PWM);
    14. }
    15. void loop() {
    16.   //指数式增加亮度,适合驱动LED,看起来亮度更线性
    17.   for (int i = 0; i < 256; i++)
    18.   {
    19.     delay(20);
    20.     pwmWrite(PB0, i * i);
    21.     pwmWrite(PA7, i * i);
    22.     pwmWrite(PA6, i * i);
    23.     pwmWrite(PA3, i * i);
    24.     pwmWrite(PA2, i * i);
    25.     pwmWrite(PA1, i * i);
    26.     pwmWrite(PA0, i * i);
    27.     pwmWrite(PB7, i * i);
    28.     pwmWrite(PB6, i * i);
    29.     pwmWrite(PA10, i * i);
    30.     pwmWrite(PA9, i * i);
    31.     pwmWrite(PA8, i * i);
    32.   }
    33. }


    或者用序号表示:

    1. int pins[12] = {0, 1, 2, 3, 6, 7, 8, 9, 10, 16, 22, 23};
    2. void setup()
    3. {
    4.   for (int i = 0; i < 12; i++)
    5.   {
    6.     pinMode(pins[i], PWM);
    7.   }
    8. }
    9. void loop()
    10. {
    11.   for (int i = 0; i < 100; i++)
    12.   {
    13.     for (int j = 0; j < 12; j++)
    14.     {
    15.       pwmWrite(pins[j], i * i);
    16.     }
    17.     delay(20);
    18.   }
    19. }



    3、允许的ADC引脚:
    ADC总共有10个通道,12bit即4096级。引脚如下

    物理引脚,ADC通道
    PA0        CH0
    PA1        CH1
    PA2        CH2
    PA3        CH3
    PA4        CH4
    PA5        CH5
    PA6        CH6
    PA7        CH7
    PB0        -(不能用序号表达)
    PB1        -(不能用序号表达)


    ADC测试程序:

    1. void setup()
    2. {
    3.   Serial.begin(115200);
    4.   pinMode(PB0, INPUT_ANALOG);
    5.   pinMode(PA7, INPUT_ANALOG);
    6.   pinMode(PA6, INPUT_ANALOG);
    7.   pinMode(PA5, INPUT_ANALOG);
    8.   pinMode(PA4, INPUT_ANALOG);
    9.   pinMode(PA3, INPUT_ANALOG);
    10.   pinMode(PA2, INPUT_ANALOG);
    11.   pinMode(PA1, INPUT_ANALOG);
    12.   pinMode(PA0, INPUT_ANALOG);
    13.   pinMode(PB1, INPUT_ANALOG);
    14. }
    15. void loop()
    16. {
    17.   delay(50);
    18.   Serial.print(" PB0="); Serial.print(analogRead(PB0));
    19.   Serial.print(" PA7="); Serial.print(analogRead(PA7));
    20.   Serial.print(" PA6="); Serial.print(analogRead(PA6));
    21.   Serial.print(" PA5="); Serial.print(analogRead(PA5));
    22.   Serial.print(" PA4="); Serial.print(analogRead(PA4));
    23.   Serial.print(" PA3="); Serial.print(analogRead(PA3));
    24.   Serial.print(" PA2="); Serial.print(analogRead(PA2));
    25.   Serial.print(" PA1="); Serial.print(analogRead(PA1));
    26.   Serial.print(" PA0="); Serial.print(analogRead(PA0));
    27.   Serial.print(" PB1="); Serial.println(analogRead(PB1));
    28. }



    4、允许的串口
    总共3个硬件外接串口Serial1、Serial2、Serial3,一个USB虚拟串口Serial:

    1. void setup()
    2. {
    3.   Serial.begin(115200);
    4.   Serial1.begin(115200);  //TX=PA9,RX=PA10
    5.   Serial2.begin(115200);  //TX=PA2,RX=PA3
    6.   Serial3.begin(115200);  //TX=PB10,RX=PB11
    7. }
    8. void loop()
    9. {
    10.   delay(100);
    11.   Serial.println("Test Serial");
    12.   Serial1.println("Test Serial1");
    13.   Serial2.println("Test Serial2");
    14.   Serial3.println("Test Serial3");
    15. }
  • 相关阅读:
    手把手教你接入微信支付
    Java中的深浅拷贝问题,你清楚吗?
    DeimosC2 源码阅读
    一行命令删除空的docker images
    docker build出现交互式时区设置解决
    Amass项目源码阅读(整体架构)
    Prometheus时序数据库-磁盘中的存储结构
    Prometheus时序数据库-内存中的存储结构
    解Bug之路-ZooKeeper集群拒绝服务
    日常Bug排查-Nginx重复请求?
  • 原文地址:https://www.cnblogs.com/chinayixia/p/12192138.html
Copyright © 2011-2022 走看看