用C#在STM32上写第一个Hello world

随着微软放弃.Net MF ,通过C#编写STM32 平台上的程序变得渺茫, 但是, 别着急, 目前至少有两个社区在做这件事情, 传承了微软的.Net MF , 一家是 nanoframework,另外一家比较封闭的是 

GHI Electronics 地址是: https://github.com/ghi-electronics  GHI只支持自家设计生产的开发板,不支持STM32其他厂商的开发板。因此最佳选择我认为是 nanoframework。 

实现Hello World 之前, 我们需要做以下几步:

一、安装VS2019 ,在扩展菜单中搜索 nanoframework  

二、选择开发板

    选择开发板很重要, 直接意味着你是不是能完成这件事, 比如笔者, 买了三个开发板, 一个型号不对, 一个快递丢了, 最后只有一个能用, 型号是STM32F411E-DISCO,他是是ST公司推出的一款针对STM32F411设计的开发板,可帮助您探索STM32F4系列,轻松开发自己的应用,还提供有完善的资料能帮助所有初学者和有经验开发人员快速上手。STM32F411E-DISCO基于STM32F411VET6设计,集成了ST-LINK/V2仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦;还增添了陀螺仪、电子罗盘、数字麦克风、音频解码芯片、OTG USB、 LED和按钮等外设,方便您学习开发。。详细资料你可以访问 https://www.st.com/zh/evaluation-tools/32f411ediscovery.html 来了解!

  

三、烧写nanoframework 

  1. 从ST官网下载 STM32 ST-LINK Utility 并安装到你的计算机。 

  2. 要下载文章中指定的这款开发板固件, 需要前往  https://bintray.com/nfbot/nanoframework-images-community-targets/ST_STM32F411_DISCOVERY/_latestVersion 下载, 如果其他开发板请前往 https://github.com/nanoframework/nf-Community-Targets 或者   nanoFramework 下载开发板的固件 ,  连接会最终会引导你到 JFrog Bintray 库下载预编译好的nanoframework zip压缩包,下载完成后 然后解压他。 

  3. 最好是通过两根micro USB 连接线连接, 一根是USB type A 公口,mini-B 公口,用来通过TAG连接 ST-Link调试器, 另外一根用来更好的供电, 但低电量模式也是可以的,另外一个可以是 USB type A 公口,micro-B 公口,用来补充电能。 

  4. 启动 e ST-LINK Utility 连接你的ST开发板.

  5. 使用 "full chip erase" 清除闪存.

  6. 文件中选择刚解压的压缩包中的文件 nanoBooter.hex , 然后点 "Program and verify" 按钮, 在点‘Start’按钮之前确保选中"Reset after programming" , 然后你可能可以看到 开发板上的led闪烁速度比以前较慢。 

  7. 紧接着, 打开文件nanoCLR.hex , 同样点击 "Program and verify" 按钮,并确保 "Reset after programming" 选中后再点击  "Start", 然后上传完成, MCU已经充值并且nanoCLR镜像将开始运行, 这时候LED灯不再闪烁, 

四、通过串口连接你到VS

在能通过VS调试之前,  你需要一个 串口转USB的适配器,将PA2 接在 USART2_TX, PA3 接在USART2_RX 并且将 GND 也同样接在开发板上。 我选择的设备信号是 FT232 USB UART Board (mini) , 如果你身边有同类的, 则不需要, 之所以买它是因为手头没有杜邦线,他具备如下特性:

  • 采用原装FT232RL

  • 支持Mac、Linux、Android、WinCE、Windows 7/8/8.1/10...

  • 支持3种供电模式:5V对外供电;3.3V对外供电;由外部供电(要求3.3V-5V)

  • 带3个LED:TXD LED、RXD LED、POWER LED

  • TXD、RXD、RTS#、CTS#:采用弯排针引出

  • 其余功能PIN:预留焊盘(配送排针、排座,可上插或下插接入用户系统;PIN间距支持插入万用板)

 用说明:

  • VCCIO:输出3.3V或5V(模块由USB供电,须将跳线帽跳到3.3V或5V)

  • GND:接GND

  • TXD:接MCU.RX ( 信号流向:MCU.RX << FT232 << PC.TX )

  • RXD:接MCU.TX ( 信号流向:MCU.TX >> FT232 >> PC.RX )

  • RTS:接MCU.CTS ( 信号流向:MCU.CTS << FT232 << PC.RTS )

  • CTS:接MCU.RTS ( 信号流向:MCU.RTS >> FT232 >> PC.CTS )

注意:本产品不带USB线。该模块为USB转TTL电平,切勿直连RS232电平,以免烧坏模块。我购买的型号如下图所示:

整体连接起来示意图如下:

红线接电 , 黑线接地, 橙色线接PA3, 黄色线接在PA2,

USB type A公口接笔记本, mini-B 公口从开发板上拔下来, 接在串口转USB的接口上。 

五,VS中查找设备:

启动VS2019 , 确保之前扩展已经装好, 然后在视图菜单的 其他窗口中找到 Device Explorer ,如下图所示:

插上我们的开发板, 稍等片刻后自动寻找到开发板, 如下图所示:

现在开始, 我们创建第一个项目Hello World , 

创建后, 第一件事情应该是进nuget管理器中, 将 nanoFramework.CoreLibrary  升级为 最新版本, 

如下图:

开始运行

此时, 你的第一个 在STM32上的C# Hello World 完成。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何找到Eclipse左侧项目栏

如何找到Eclipse左侧项目栏 window --> Show View --> other --> Java–> package Explorer

深入async/await知多少

.net的async/await功能相信对很多人来说并不陌生了&#xff0c;有人感觉这功能很好&#xff0c;但也有人说这功能不好容易产生一些莫名其妙的死锁&#xff1b;有人说这些异步功能也有人说这是同步功能。其实在使用async/await的有多少人真的了解它们呢&#xff1f;接下来详细地…

微软正式发布 gRPC-Web for .NET

今年一月份的时候&#xff0c;微软曾宣布对 gRPC-Web for .NET 的实验性支持微软实验性地对 .NET 支持 gRPC-Web&#xff0c;现在它已正式发布。gRPC 是谷歌开源的高性能、通用 RPC 框架&#xff0c;支持包括 .NET 在内的多种编程语言。它面向移动和基于 HTTP/2 标准设计&#…

Java多线程(review)

文章目录线程状态线程方法线程停止线程休眠——sleep网络延时模拟倒计时与打印当前系统时间线程礼让——yield线程强制执行——Join线程状态线程优先级守护线程不安全案例死锁Lock锁线程状态 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后&#xff0c;该线…

利用Azure Functions和k8s构建Serverless计算平台

题记&#xff1a;昨晚在一个技术社区直播分享了“利用Azure Functions和k8s构建Serverless计算平台”这一话题。整个分享分为4个部分&#xff1a;Serverless概念的介绍、Azure Functions的简单介绍、k8s和KEDA的介绍和最后的演示。ServerlessServerless其实包含了两种概念&…

基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

对 JsonConvert 的认识太肤浅了,终于还是遇到了问题

一&#xff1a;背景1. 讲故事在开始本文之前&#xff0c;真的好想做个问卷调查&#xff0c;到底有多少人和我一样&#xff0c;对 JsonConvert 的认识只局限在 SerializeObject 和 DeserializeObject 这两个方法上(┬&#xff3f;┬), 这样我也好结伴同行&#xff0c;不再孤单落…

.Net微服务实战之DevOps篇

技术只是基础该系列的两篇文章《.Net微服务实战之技术选型篇》和《.Net微服务实战之技术架构分层篇》都是以技术角度出发描述微服务架构的实施。如果技术选型篇叙述的是工具&#xff0c;那么架构分层篇讲的就是技巧&#xff0c;而本篇要讨论的就是原则。一直以来我会给身边向我…

阿里云挑战赛

文章目录第一题题目&#xff1a;题解&#xff1a;第二题题目题解第三题题目题解第四题题目&#xff1a;题解第五题题目题解第六题题目题解第七题题目&#xff1a;题解第八题题目&#xff1a;题解;题解赛后出第一题 题目&#xff1a; 【单选】filter 方法意图过滤传入的订单列…

使用C#编写STM32对接物联网平台IoTSharp发送遥测数据

在之前的文章中&#xff0c; 我们阐述了如何用C#在STM32上写第一个Hello world &#xff0c; 有朋友抱怨国内介绍文章&#xff0c; 都是一个 Hello world &#xff0c; 然后再也没有音讯&#xff0c; 写到这里我想提一下我的初心&#xff0c; 那就是告诉所有人C#无所不能&…

JavaMVC之JSON

JSON 8.1、什么是JSON&#xff1f; JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式&#xff0c;目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写…

龙芯团队完成CoreCLR MIPS64移植,在github开源

国产龙芯的软件生态之中.NET不会缺席&#xff0c;毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一&#xff0c;最近一段时间听到太多的鼓吹政务领域不支持.NET&#xff0c; 大家都明白这是某些人为了自己的利益打压使用.NET技术的公司&#xff0c;我今天写…

来谈一谈专注力的真相

这是头哥侃码的第205篇原创在日常生活&#xff08;或工作&#xff09;中&#xff0c;你有没有遇上过这样的情况&#xff1f;比如你正在跟小伙伴讨论一个技术方案&#xff0c;聊着聊着&#xff0c;突然小A脑袋一抽筋&#xff0c;问你&#xff1a;“老大&#xff0c;咱们这周五晚…

Java访问控制修饰符

访问控制修饰符 Java中&#xff0c;可以使用访问控制符来保护对类、变量、方法和构造方法的访问。 Java 支持 4 种不同的访问权限。 default (即默认&#xff0c;什么也不写&#xff09;: 在同一包内可见&#xff0c;不使用任何修饰符。 使用对象&#xff1a;类、接口、变量…

数据结构与算法专题——第三题 最长公共子序列

一&#xff1a;作用最长公共子序列的问题常用于解决字符串的相似度&#xff0c;是一个非常实用的算法&#xff0c;作为码农&#xff0c;此算法是我们的必备基本功。二&#xff1a;概念举个例子&#xff0c;cnblogs这个字符串中子序列有多少个呢&#xff1f;很显然有27个&#x…

Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表

代码如下: package sjjgniub;import java.util.LinkedList; import java.util.Scanner;SuppressWarnings("all") public class LinkList {private class Node{int data;Node next;public Node(){}public Node(int data){this.data data;next null;}}Node head nu…

职场PUA到底有多可怕?

阅读本文大概需要 5.2分钟。“小张&#xff0c;好好干啊&#xff0c;明年一定给你加薪&#xff01;” 。从小张入职这家公司起&#xff0c;这是老板对小张第三次这么说了。小张每天干到晚上12点&#xff0c;任劳任怨&#xff0c;虽然一直没涨过工资&#xff0c;但是老板的不断认…

数据结构与算法专题——第二题 优先队列

前段时间玩小爬虫的时候&#xff0c;我把url都是放在内存队列里面&#xff0c;有时我们在抓取url的时候&#xff0c;通过LCS之类的相似度比较&#xff0c;发现某些url是很重要的&#xff0c;需要后端解析服务器优先处理&#xff0c;针对这种优先级比较大的url&#xff0c;普通的…

数据结构与算法专题——第一题 Bitmap算法

在所有具有性能优化的数据结构中&#xff0c;我想大家使用最多的就是hash表&#xff0c;是的&#xff0c;在定位查找场景上具有O(1)的常量时间&#xff0c;多么的简洁优美&#xff0c;但是在特定的场合下&#xff1a;①&#xff1a;对10亿个不重复的整数进行排序。②&#xff1…