如何使用c#编写单片机程序

因为个人喜爱想研究单片机,但是不太会c,然后再找资料研究有没有其他的方法发现国外的c# nanoframework 框架可以编写单片机程序,本文我将会用自己踩过的坑来总结一些c#编写单片机的一些经验,希望帮到热爱c#的xd 

首先第一步我们需要准备材料:

 1. esp32 板子 支持wifi蓝牙的esp32板子,和安卓数据线如图:

        abf0c51c743e0a86d3222073fbdb5944.png4d59563a63b1a61a7fbd07b0ebf9d67e.png

 2. 然后准备vs code, 和vs2022,本文将用vs2022做教程

准备好以后将esp32设备和电脑连接(安卓线连接)

开始搭建esp32的nanoframework 开发环境

打开vs code然后点击扩展

5e328ed03241e5ca1e4dcfa63e48c68f.pngd5540f4bbba86de409e90ef76345069a.png

搜索 nanoframework 然后安装 

 05fe6e42329229eb0964197b5008668c.png905990127c67d43c2db89a262875ef17.png

 安装完成以后;打开vs2022,点击继续但无需代码

79fdda17d6c3e9b9d6bbaa7bf4dba991.png29c3dc3f5b86c91111544b1214be508b.png

点击管理扩展

e64e7384a864d13c7f6ec1a6e1d0fbe3.pngabd282e261c598165e7967be8ec4fad5.png 搜索并安装nanoframework扩展,安装完成以后关闭整个vs2022

ff82dd04761aa39d41cde24796fb6ab9.pngb29d29f38d979f18d6c924fd99499a0c.png

关闭vs2022以后后弹出这个安装扩展的界面点击安装

 9951f542b98995e5c81d031bd9f66bec.png1741ca06a14d1f91d31e01033c74e36f.png

 漫长的等待安装

4332f02e84fd603fbac0cffbd56fb755.png608864b9f53b666a164d6bd120d74b60.png

安装完成重新打开vs2022

 104b82eb5b5f086a7e4e5a9cd52dcb95.png99023f3530e6245e535bc2a470a9dc59.png

 然后点击创建新项目

5b8e674d309f49ca7fba72cce384ba54.png5ba35c6406f4115903594958e6e1d760.png

 搜索nanoframework,然后点击第一个然后点击下一步

d9cfdafb6a0731fb14b84cea27cf9749.png0f1aa09474c7cd39b7bfdddab19c2a70.png

 创建项目Demo示例点击创建

 be9801bfa879cf305f45857424c3effc.png60b3afa9eae6eb4c2443f4a0634c37cc.png

依次点击视图=》其他窗口=》Device Explorer 

1de268c30bd5674c8ef35162c1766abc.pnge1c8265063d9b70e0dd2780afb1a3731.png

点击设置

34bf108bfe83eb664f39b7ac89d50b4c.png03588aeba34bf07cd8ad73cd73aec19f.png

全部点击两边全部点击(COM port black list:表示屏蔽COM)

 d743787060a10fa6ae8370ad3434e464.pnge70a387b4534e30d8cc0a3bfc75de78f.png9061ab2745bdebad92ad13bacbb6f141.pngd1eba0138b26ee4ead6d681e790588ca.png

 然后关闭设置;我们在来到vs code中 

找到刚刚vs2022创建的项目路径 并打开

 698cf2b6d2714deb4217be07b1881c21.pngf6177502f3d0f8538d77ff1d76854ede.png

安装c#的vscode扩展 

221e666b6ce3c5f0e81c90453ed29a85.pnge017a0dc2062db12110732a8ebdef415.png

 注意!请先安装esp32驱动程序 

ESP32链接:https://pan.baidu.com/s/1V90LMRk13ZaUMJxM2teXbw

提取码:ztip

复制一下GitHub镜像 nanoframework/nf-interpreter: nanoFramework Interpreter, CLR, HAL, PAL and reference target boards (github.com)6ffeb21adc738c88034e0acfbe85cccb.pnghttps://github.com/nanoframework/nf-interpreter

安装 .NET nanoFramework固件闪存

dotnet tool install -g nanoff

eb535c6a32fb0799c4d2b541f99a7fa4.png

成功安装后,将显示一条消息,显示用于调用该工具的命令以及安装的版本。类似于以下示例:
You can invoke the tool using the following command: nanoff
Tool 'nanoff' (version '9.9.9') was successfully installed.

279c0f2c146560711a0c5594a76a2920.png

安装路径问题

⚠️当安装在包含变音符号的路径中时,运行STM32设备命令的已知问题。这是由 STM32 多维数据集编程器中的一个已知错误引起的。例如,如果您的用户路径是这种情况,则必须将其安装在具有这些路径的位置。若要实现此目的,请使用以下 .NET Core CLI 命令,该命令指定了将安装该工具的路径:nanoff

dotnet tool install nanoff --tool-path c:\a-plain-simple-path-to-install-the-tool

60f1d140b6bf512d7733296c5412a50f.png

请注意,如果您不与 STM32 设备一起使用,则此限制不适用。

更新 .NET nanoFramework固件闪存

要更新 .NET nanoFramework固件 Flasher 工具,请使用以下 .NET Core CLI 命令:

27efaf882b05c6fe85a2cd4db055e3fb.png

ESP32 使用示例

有多个 ESP32 映像可用,其中一些是专门为目标构建的。请查看列表

ESP32_PSRAM_REV0映像仅适用于 ESP32 系列的任何变体(带或不带 PSRAM)以及所有芯片修订版。您可以在此处阅读有关各种图像之间的差异的更多信息。

FEATHER_S2图像仅适用于暴露嵌入式 USB CDC 引脚的 ESP32-S2 系列的几乎所有变体。您可以在此处阅读有关各种图像之间的差异的更多信息。

使用时,您可以添加以使用特定图像。相反,如果您只是指定平台,则将根据所连接设备的功能选择最合适的图像。将显示与此类似的输出,以建议将要使用的图像:nanoff--target MY_TARGET_NAME_HERE--platform esp32nanoff

No target name was provided! Using 'ESP32_REV0' based on the device characteristics.

62b29bdd1125f74326f4f4fc68919b7f.png

某些 ESP32 开发板在进入引导加载程序模式时出现问题。这通常可以通过按住主板中的 BOOT/FLASH 按钮来克服。如果检测到这种情况,将显示以下警告:

*** Hold down the BOOT/FLASH button in ESP32 board ***

05cc4535f17c3ce9c2fffe0f18ce2bae.png

更新 ESP32 目标的固件

要将连接到 COM31 的 ESP32 目标的固件更新到最新的可用开发版本。

nanoff --update --target ESP32_PSRAM_REV0 --serialport COM3

0bab859bc983ef973c75bd66d6ded3ca.png

使用本地 CLR 文件更新 ESP32-S2 KALUGA 1 的固件

使用本地 CLR 文件(例如从内部版本)更新连接到 COM31 的 ESP32-S2 KALUGA 1 目标的固件。此文件必须是具有来自生成的有效 CLR 的二进制文件。不会对文件内容执行任何其他检查或验证。

nanoff --update --target KALUGA_1 --serialport COM31 --clrfile "C:\nf-interpreter\build\nanoCLR.bin"

e5b2f6d4add997ea578af93d5b3c3d99.png

显示已连接 ESP32 设备的详细信息

显示连接到 COM31 的 ESP32 设备的详细信息。

nanoff --platform esp32 --serialport COM31 --devicedetails

7e1bff891a0f9843d87335880dccae76.png

nanoFramework固件闪存工具官方

nanoframework/nanoFirmwareFlasher:🧰 nano firmware flasher (.NET nanoFramework toolbox) (github.com)

链接:https://pan.xunlei.com/s/VMrXz6nf9tQBsdoKxOm_nYccA1
提取码:eidf

迅雷云盘下载这个固件然后解压到D:\

nanoff --update --target KALUGA_1 --serialport COM31 --clrfile "D:\nanoCLR.bin"

运行烧录程序烧录固件进去等待成功然后进入vs code

按住ctrl+shift+p ;然后搜索nanoframework 点击nanoframework flash device

等待一小会就会弹框

3b7e413ab51f69bbff1603c336ddc705.png3e9356c35344fc1529927d52885b483f.png

 安装自己的esp32安装我安装是红色框框的 

32adc4313d0a28629bdda8f3c900890c.png06eaa0843b9079af891f09a141056bb0.png

203428b41925b0187a4add784f32b4e4.png4a8b71cc8bbc5355403cd08ad453eab0.png

 46b50b9b652208ad2828ee1d4a62c528.png246fdfa9bed022d7432640d32b9c9611.png

 fa8e55f8ff691cfb53b31975c106dcda.png1c06684b27ea7c95f9233b49dbd2b43c.png

 a005947283cb227e110ebd572e2b6f90.pngcc4a1c129967ff9c352728adb1f77036.png

固件烧录完成

b2fb4f0d4d9fde49cedb8bfbad91be6d.png50f02e3ea4e3b281962a7aada2776bb1.png

然后打开vs2022这个时候我们就可以看到设备了然后点击运行

0da8c61ac6414f7bde3e8d661913e272.png956ecc4ec028b02a4d74e4c77b3b014a.png

好了运行完成 

0756ed085f28f6d9d09698813e975b55.png57199c5f4f10497f625cd8323060a610.png

 有喜欢c#单片机研究的朋友可以加我的q:239573049

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

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

相关文章

机器学习与数据挖掘——第二章 数据与数据预处理

一、关于数据 什么是数据? 数据是数据对象的集合及其属性 属性的类型 标称标度 nominal scale 标称属性的值是一些符号或实物的名称,每个值代表某种类别、编码或状态,所以标称属性又被看做是分类型的属性(categorical&#xff…

《 线性代数及其应用 (原书第4版)》——1.2 行化简与阶梯形矩阵

本节书摘来自华章出版社《 线性代数及其应用 (原书第4版)》一书中的第1章,第1.2节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包乐娥 陆 博 译&a…

c#使用FluentFtp实现一行代码实现ftp上传下载等

一:简介FluentFTP 是一个完全托管的 .NET 和 .NET Standard 的 FTP 和 FTPS 库,针对速度进行了优化。它提供了广泛的 FTP 命令、文件上传/下载、SSL/TLS 连接、自动目录列表解析、文件哈希/校验和、文件权限/CHMOD、FTP 代理、FXP 传输、UTF-8 支持、异步/等待支持、…

软件体系结构知识点整理

包括软件体系结构风格、uml、软件质量属性、面向对象设计原则以及设计模式 pdf及goodnote版本

《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...

本节书摘来自异步社区出版社《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》一书中的第1章,第1.2节,作者: 【美】Itzik Ben-Gan,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 使用窗口函数的解决方案简介 …

ASP.NET Core(十)Configuration 配置优先级详解

ASP.NET Core 项目启动,默认执行顺序为:宿主 Host -> 读取配置 -> 日志设置 -> 注册服务(DI)-> 添加中间件 -> WebHost 监听 -> 后台 Work 启动。配置的加载和读取是在启动流程的最前面。微软关于 ASP.NET Core…

带中文索引的ListView 仿微信联系人列表

因为各种原因,项目经理和产品经理把我做的东西给否定了,所以决定分享出去。 主要功能: 1 、带中文索引的ListView 2、自己定义顶部搜索视图,能够对返回button,搜索button加入事件监听,带动画的咧&#xff0…

解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误

前言虽然 ASP.NET Core 应用程序是跨平台的,但我们还是经常将它部署到 Windows 的 IIS 下。当 ASP.NET Core 站点运行时,它会锁定正在使用的程序集,如果这时向站点目录下复制文件进行更新,会提示文件被占用的错误:这时…

软件配置管理(二)配置管理角色与过程

文章目录一、配置管理角色及职责项目经理(PM)配置控制委员会(CCB)配置管理员(CMO)系统集成员(SIO)开发人员(DEV)二、配置管理基本流程计划阶段开发和维护阶段…

学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)

一.语法 1.javascirpt中一切(变量,函数名和操作符)是严格区分大小写的。 2.javascript(标识符) 所谓标识符,就是指变量,函数,属性的名字,或者函数的参数。 命名规则&…

Android悬浮窗口的实现

效果图:(悬浮框可拖动) 在项目开发中有一个需求:弹出悬浮窗后,响应悬浮窗的事件再弹出对话框,但是对话框怎么也不显示。也就是说在弹出悬浮框的同时,不能再弹出对话框,可能的原因&am…

软件配置管理(三)软件配置管理核心功能

文章目录一、CMM/CMMI与软件配置管理产品完整性二、三库管理三、基线管理基线管理的好处基线管理的步骤四、配置库管理五、变更管理变更管理流程六、配置审计七、配置状态报告一、CMM/CMMI与软件配置管理 软件配置管理是CMM/CMMI二级(可重复级)的一个重…

移除指定 global using 命名空间

前言在《.NET 6新特性试用 | 隐式using指令》中&#xff0c;我们介绍过&#xff0c;开启隐式using指令时&#xff0c;会在编译时生成 GlobalUsings.g.cs 文件&#xff0c;加入大量 global using 指令&#xff1a;// <auto-generated/> global using global::Microsoft.As…

Ubuntu 每日技巧- 自动备份Ubuntu 14.04到Box云存储上

Ubuntu 每日技巧- 自动备份Ubuntu 14.04到Box云存储上 如今你已经升级或者安装了Ubuntu 14.04&#xff0c; 但是还有另外一件保护你的新系统需要做的事情&#xff1a;备份&#xff01; Ubuntu内置了一个备份工具 Dj Dup Backup Tool。它允许你备份你的系统并保存在本地或者通过…

【C#/.NET 日常开发技巧】JWT+ActionFilter 简便控制器代码

微信公众号&#xff1a;趣编程ACE关注可了解更多.NET日常开发技巧&#xff0c;如需源码&#xff0c;请公众号留言 源码;JWTActionFilter 简便控制器代码这是微软关于过滤器的介绍&#xff1a;https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/filters?viewaspne…

在P2P市场中代替“看不见的手”的算法在哪里

◆ ◆ ◆ 本文简单探讨P2P市场机制&#xff0c;在此基础上探讨匹配撮合服务的可能性。 ◆ ◆ ◆ P2P市场机制基本定义与假设 首先&#xff0c;我们回顾一些基本定义与假设。P2P市场为“网络借贷是指个体和个体之间通过互联网平台实现的直接借贷。”[2]利率决定一般是平台决定借…

关于他们回答的 怎样在桌面建一个python GUI的快捷方式 这个问题

在之前的2个随笔里面&#xff0c;有写过《找到可以解决问题的正确的人》、《如何提问》&#xff0c;说白了就是您需要帮助的时候&#xff0c;您得让对方100%懂你&#xff0c;否则没戏。 那么最近看到这样1个古老的问题&#xff0c;和一些没有答到"点儿"上的回答&…

.NET Core中行为过滤器ActionFilterAttribute的使用介绍

什么是行为过滤器&#xff1f;行为过滤器是你可以应用到一个控制器行为的&#xff0c;或者整个控制器的&#xff0c;来修改控制器行为的执行方式的属性。当请求进入 API 接口的时候&#xff0c;操作过滤器提供了一个进入之前&#xff08;before&#xff09;和进入之后&#xff…

基本线程同步(三)在同步的类里安排独立属性

声明&#xff1a;本文是《 Java 7 Concurrency Cookbook 》的第二章&#xff0c;作者&#xff1a; Javier Fernndez Gonzlez 译者&#xff1a;许巧辉 校对&#xff1a;方腾飞 在同步的类里安排独立属性 当你使用synchronized关键字来保护代码块时&#xff0c;你必须通过一…

软件项目组织管理(一)项目管理概述

文章目录什么是项目项目的特征项目的组成要素&#xff08;三维约束&#xff09;什么是项目管理什么是IT项目什么是软件项目管理项目管理的目标&#xff08;项目成功的标志&#xff09;软件项目失败的原因活动的3个基本特点人类活动分为两种类型作业和项目的区别&#xff08;必考…