1控制LED和继电器

除了 PA11和PA12其他都可以

  1. void setup() {
  2.  
  3. pinMode(PC13, OUTPUT);
  4. pinMode(PC14, OUTPUT);
  5. pinMode(PC15, OUTPUT);
  6.  
  7. pinMode(PA0, OUTPUT);
  8. pinMode(PA1, OUTPUT);
  9. pinMode(PA2, OUTPUT);
  10. pinMode(PA3, OUTPUT);
  11. pinMode(PA4, OUTPUT);
  12. pinMode(PA5, OUTPUT);
  13. pinMode(PA6, OUTPUT);
  14. pinMode(PA7, OUTPUT);
  15. pinMode(PA8, OUTPUT);
  16. pinMode(PA9, OUTPUT);
  17. pinMode(PA10, OUTPUT);
  18. // pinMode(PA11, OUTPUT); // CAN t0 不能用
  19. // pinMode(PA12, OUTPUT); // CAN r0 不能用
  20. pinMode(PA15, OUTPUT);
  21.  
  22. pinMode(PB0, OUTPUT);
  23. pinMode(PB1, OUTPUT);
  24. pinMode(PB2, OUTPUT);
  25. pinMode(PB3, OUTPUT);
  26. pinMode(PB4, OUTPUT);
  27. pinMode(PB5, OUTPUT);
  28. pinMode(PB6, OUTPUT);
  29. pinMode(PB7, OUTPUT);
  30. pinMode(PB8, OUTPUT);
  31. pinMode(PB9, OUTPUT);
  32. pinMode(PB10, OUTPUT);
  33. pinMode(PB11, OUTPUT);
  34. pinMode(PB12, OUTPUT);
  35. pinMode(PB13, OUTPUT);
  36. pinMode(PB14, OUTPUT);
  37. pinMode(PB15, OUTPUT);
  38.  
  39. }
  40.  
  41. void loop() {
  42. digitalWrite(PC13, HIGH);
  43. digitalWrite(PC14, HIGH);
  44. digitalWrite(PC15, HIGH);
  45.  
  46. digitalWrite(PA0, HIGH);
  47. digitalWrite(PA1, HIGH);
  48. digitalWrite(PA2, HIGH);
  49. digitalWrite(PA3, HIGH);
  50. digitalWrite(PA4, HIGH);
  51. digitalWrite(PA5, HIGH);
  52. digitalWrite(PA6, HIGH);
  53. digitalWrite(PA7, HIGH);
  54. digitalWrite(PA8, HIGH);
  55. digitalWrite(PA9, HIGH);
  56. digitalWrite(PA10, HIGH);
  57. // digitalWrite(PA11, HIGH);
  58. // digitalWrite(PA12, HIGH);
  59. digitalWrite(PA15, HIGH);
  60.  
  61. digitalWrite(PB0, HIGH);
  62. digitalWrite(PB1, HIGH);
  63. digitalWrite(PB2, HIGH);
  64. digitalWrite(PB3, HIGH);
  65. digitalWrite(PB4, HIGH);
  66. digitalWrite(PB5, HIGH);
  67. digitalWrite(PB6, HIGH);
  68. digitalWrite(PB7, HIGH);
  69. digitalWrite(PB8, HIGH);
  70. digitalWrite(PB9, HIGH);
  71. digitalWrite(PB10, HIGH);
  72. digitalWrite(PB11, HIGH);
  73. digitalWrite(PB12, HIGH);
  74. digitalWrite(PB13, HIGH);
  75. digitalWrite(PB14, HIGH);
  76. digitalWrite(PB15, HIGH);
  77.  
  78. delay(1000);
  79.  
  80. digitalWrite(PC13, LOW);
  81. digitalWrite(PC14, LOW);
  82. digitalWrite(PC15, LOW);
  83.  
  84. digitalWrite(PA0, LOW);
  85. digitalWrite(PA1, LOW);
  86. digitalWrite(PA2, LOW);
  87. digitalWrite(PA3, LOW);
  88. digitalWrite(PA4, LOW);
  89. digitalWrite(PA5, LOW);
  90. digitalWrite(PA6, LOW);
  91. digitalWrite(PA7, LOW);
  92. digitalWrite(PA8, LOW);
  93. digitalWrite(PA9, LOW);
  94. digitalWrite(PA10, LOW);
  95. // digitalWrite(PA11, LOW);
  96. // digitalWrite(PA12, LOW);
  97. digitalWrite(PA15, LOW);
  98.  
  99. digitalWrite(PB0, LOW);
  100. digitalWrite(PB1, LOW);
  101. digitalWrite(PB2, LOW);
  102. digitalWrite(PB3, LOW);
  103. digitalWrite(PB4, LOW);
  104. digitalWrite(PB5, LOW);
  105. digitalWrite(PB6, LOW);
  106. digitalWrite(PB7, LOW);
  107. digitalWrite(PB8, LOW);
  108. digitalWrite(PB9, LOW);
  109. digitalWrite(PB10, LOW);
  110. digitalWrite(PB11, LOW);
  111. digitalWrite(PB12, LOW);
  112. digitalWrite(PB13, LOW);
  113. digitalWrite(PB14, LOW);
  114. digitalWrite(PB15, LOW);
  115.  
  116. delay(1000);
  117. }

  

2 PWM控制

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

延迟给100微妙 多了少了都有问题,不正常转

  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 = 1000; i < 65536; i++)
  19. {
  20. //delayMicroseconds(100);
  21. // delay(1);
  22. delay(20);
  23. pwmWrite(PB0, i);
  24. pwmWrite(PA7, i);
  25. pwmWrite(PA6, i);
  26. pwmWrite(PA3, i);
  27. pwmWrite(PA2, i);
  28. pwmWrite(PA1, i);
  29. pwmWrite(PA0, i);
  30. pwmWrite(PB7, i);
  31. pwmWrite(PB6, i);
  32. pwmWrite(PA10, i);
  33. pwmWrite(PA9, i);
  34. pwmWrite(PA8, i);
  35. }
  36. for (int i = 65536; i > 1000; i--)
  37. {
  38. // delayMicroseconds(100);
  39. // delay(1);
  40. delay(20);
  41. pwmWrite(PB0, i);
  42. pwmWrite(PA7, i);
  43. pwmWrite(PA6, i);
  44. pwmWrite(PA3, i);
  45. pwmWrite(PA2, i);
  46. pwmWrite(PA1, i);
  47. pwmWrite(PA0, i);
  48. pwmWrite(PB7, i);
  49. pwmWrite(PB6, i);
  50. pwmWrite(PA10, i);
  51. pwmWrite(PA9, i);
  52. pwmWrite(PA8, i);
  53. }
  54. }

  

  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. }

 

IO引脚读取

int value = digitalRead(pin);

ADC引脚

实际测试  0-4096  2的10次方

 

在pa7接一个光敏电阻,完全遮盖4095  手机强光基本几十

  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("\tPB0="); Serial.print(analogRead(PB0));
  19. Serial.print("\tPA7="); Serial.print(analogRead(PA7));
  20. Serial.print("\tPA6="); Serial.print(analogRead(PA6));
  21. Serial.print("\tPA5="); Serial.print(analogRead(PA5));
  22. Serial.print("\tPA4="); Serial.print(analogRead(PA4));
  23. Serial.print("\tPA3="); Serial.print(analogRead(PA3));
  24. Serial.print("\tPA2="); Serial.print(analogRead(PA2));
  25. Serial.print("\tPA1="); Serial.print(analogRead(PA1));
  26. Serial.print("\tPA0="); Serial.print(analogRead(PA0));
  27. Serial.print("\tPB1="); Serial.println(analogRead(PB1));
  28. }

  

中断

  1.   
  2. void onChange()
  3. {
  4. if ( digitalRead(PA8) == LOW )
  5. Serial.println("Key Down");
  6. else
  7. Serial.println("Key UP");
  8. }
  9.  
  10. void setup()
  11. {
  12. Serial.begin(9600); //打开串口
  13.  
  14. pinMode( PA8, INPUT);//设置管脚为输入
  15.  
  16. //Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化
  17. /*
  18. LOW 低电平触发
  19. CHANGE 电平变化,高电平变低电平、低电平变高电平
  20. RISING 上升沿触发
  21. FALLING 下降沿触发
  22. HIGH 高电平触发(该中断模式仅适用于Arduino due)
  23. */
  24. attachInterrupt( PA8, onChange, CHANGE);
  25. }
  26.  
  27. void loop()
  28. {
  29. // 模拟长时间运行的进程或复杂的任务。
  30. for (int i = 0; i < 100; i++)
  31. {
  32. // 什么都不做,等待10毫秒
  33. delay(10);
  34. }
  35. }

  

允许的串口

总共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. }

  

(二)STM32开发例程的更多相关文章

  1. 转载:百为STM32开发板教程之十二——NAND FLASH

    http://bbs.21ic.com/icview-586200-1-1.html 百为STM32开发板教程之十二——NAND FLASH 参考资料:百为stm32开发板光盘V3\百为stm32开发 ...

  2. stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习 ...

  3. 如何查找STM32开发资料

    Ⅰ.概述 该文写给那些处于初学ST芯片开发.英文不好而又想偷懒的人. 该文主要的目的是提醒大家:学习一门技术是需要舍得花功夫,捷径是你在起点与终点之间不断的探索,最终总结出来的一条适合自己的路. 下面 ...

  4. stm32开发之标准库的介绍

    1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描 ...

  5. 浩顺AC671指纹考勤机二次开发(demo)

    关于考勤机 AC671,是新换的机器,以前的那部机器,通过网络死活连接不上,换了AC671网络连接是好用了.但是,我要吐槽 浩顺的考勤机应该是卖了很多了吧,可是自带的软件太不给力,最后分析出来的数据一 ...

  6. windows下STM32开发环境的搭建

    一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...

  7. Linux下STM32开发环境的搭建

    目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...

  8. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  9. 转载:百为STM32开发板教程之十一——NOR FLASH

    转载:http://bbs.21ic.com/icview-586199-1-1.html 百为STM32开发板教程之十一——NOR FLASH 参考文档:百为stm32开发板光盘\st官方参考资料\ ...

随机推荐

  1. CentOS7 Git 安装

    最新git源码下载地址: https://github.com/git/git/releases https://www.kernel.org/pub/software/scm/git/ 1 移除旧版 ...

  2. 动手学深度学习4-线性回归的pytorch简洁实现

    导入同样导入之前的包或者模块 生成数据集 通过pytorch读取数据 定义模型 初始化模型 定义损失函数 定义优化算法 训练模型 小结 本节利用pytorch中的模块,生成一个更加简洁的代码来实现同样 ...

  3. windows 的一些快捷键

    https://www.zhihu.com/question/276786944/answer/698967240 1.新建文件夹 Ctrl  + Shift + N        或者鼠标右键 然后 ...

  4. VisualHull && association4D 观摩记录

    简单记录一下自己对VisualHull 和 association4D 两个程序的理解,没有别的意思(当然是真的 由于进度还很慢,暂时只是简单记录一下发现的点和踩过的坑,做完再把资料汇总. Visua ...

  5. gcc/g++ -O 优化选项说明

    查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一 ...

  6. Prometheus 运维监控

    Prometheus 运维监控 1.Prometheus 介绍详解 2.Prometheus 安装部署 3.Prometheus 配置文件详解 4.Prometheus PromSQL 常用资源 5. ...

  7. 前端学习:JS学习总结(图解)

    前端学习:JS学习总结(图解) JS的代码笔记 JS比HTML和CSS的知识点要多的多,下面分几段来介绍其内容... 为了能让大家更好的检索,前面的图解是整个JS的概括,后面的才是知识点... 旁边就 ...

  8. Redis(五)事务

    Redis(五)事务 引用wiki中关于事务处理的定义: Transaction processing is information processing in computer science th ...

  9. windows系统mysql-5.7官方绿色版zip包安装教程

    准备 下载页面:https://dev.mysql.com/downloads/mysql/ 点击 Download 按钮下载zip包到本地,解压(以我本地的解压路径是 D:\db\mysql-5.7 ...

  10. C#中的 ?/?:/?? 三者的区别及用法

    在项目的搭建过程中不经意间看到一个关于以上标题三个符号的代码,于是留心记录一下,以备不时之需: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.    ...