网站搭建平台选哪个便宜网站建设哪家好

web/2025/10/3 10:20:58/文章来源:
网站搭建平台选哪个,便宜网站建设哪家好,成都网站建设类岗位,wordpress虎嗅网主题一直有一个做机器人的梦#xff0c;所以从去年起放弃了十多年的软件开发#xff0c;开始进入嵌入式领域#xff0c;先后在.Net Micro Framework 项目中完成了Ti DM335上的GPIO、I2C、USB等驱动#xff0c;方浅浅地了解了什么叫嵌入式开发。 对非软件也非硬件出身的我#… 一直有一个做机器人的梦所以从去年起放弃了十多年的软件开发开始进入嵌入式领域先后在.Net Micro Framework 项目中完成了Ti DM335上的GPIO、I2C、USB等驱动方浅浅地了解了什么叫嵌入式开发。 对非软件也非硬件出身的我学硬件当然从单片入手最简单如果直接从ARM开始就像学语言直接从VBVC开始似的刚开始可能觉得很有成就感但是学久了才知道浮在上面很难深下去了。 正好开发USB驱动期间看了一本介绍USB的书该书还附送PCB板所以就从焊接这个电路板开始吧记得最早焊过的相对复杂的电路板是大学金工实习时的收音机不过和这个相比就是大巫见小巫了。去了中发电子市场一两次总算把该买的零件和工具置办齐现在就要开始动手了参见下图。 焊接后的成品参见下图 对没有多少焊接经验的我来说焊接过程即充满波折也充满乐趣。 一开始我很担心怕焊接时间过长烧坏了芯片其实这种担心是多余的一般的芯片还是比较耐高温的上网查了些资料说芯片最怕的是静电所以焊接时一定记得带防静电手腕带。 焊接完毕后一上电电源灯正常点亮可没想到运行ISP程序竟无法下载用示波器查看发现主晶振没有起振也可以用万用表量两管脚电压来判断。仔细用万用表排查发现两个问题一是CPU有几个管脚虚焊二是串口条线设置有些问题看原理图理解有误重新又补焊了CPU的几个管脚和调整了跳线一上电ISP程序就可以正常下载了编写了一个小测试程序果然按钮、LED、蜂鸣器一切正常。 接着测试USB芯片但是很不妙读出的ID号为0。又用万用表仔细排查又是焊接问题USB芯片一个管脚没有焊好重新补焊读ID正常。 看来对我们新手来说焊接这步很关键宁愿焊的慢一些也要焊接的牢一点。 不过下载了鼠标U盘等程序设备还是不能正常运转用USB分析仪监控了一下发现设备可以正常接收数据但是无法向PC返回数据出现总线超时错误。看来USB芯片还是有些问题不过这有可能不是焊接的问题了有可能和时序相关等有时间再深入研究吧。 下面是我根据书中和网上的资料重新编写了测试程序 ---------------- STC89C52.h ---------------- #ifndef __STC89C52_H__ #define __STC89C52_H__ #include REGX52.H //-- #define TRUE 1 #define FALSE 0 #define BOOL unsigned char #define UINT8 unsigned char #define UINT16 unsigned short int #define UINT32 unsigned long int #define UINT64 unsigned long long int #define INT8 signed char #define INT16 signed short int #define INT32 signed long int #define INT64 signed long long int //-- #define Fclk 22118400UL   //主频 #define BitRate 9600UL    //串口波特率 //-- void STC89C52_Init(void); //led 0-7 #define Leds P2 void SetLed(UINT8 led,BOOL ON); BOOL GetLed(UINT8 led); //key 0-7 extern volatile UINT8 idata KeyPress,KeyValue; BOOL GetKey(UINT8 key); void Delay(UINT16 millisecond); void Sound(UINT16 millisecond); void Print(char * info); void PutHex(UINT32 x,UINT8 Num);          #endif --------------------------- STC89C52.c --------------------------- #include stc89c52.h void Keyboard_Init(void); void Uart_Init(void); //--   void STC89C52_Init(void) {    P20xFF; //LED全灭    EA1;    //允许中断    Keyboard_Init();    Uart_Init(); } //-- void SetLed(UINT8 led,BOOL ON) {          if(ON)          {              P2 ~(0x1led);             }          else          {              P2 | 0x1led;                   } } BOOL GetLed(UINT8 led) {    return ~((P2led) 0x1); } //-- volatile UINT8 idata KeyPress,KeyCurrent,KeyOld,KeyNoChangedTime; void Keyboard_Init(void) {    P1 0xFF;               //键盘对应的IO设为输入状态    KeyPress 0;              //无按键按住    KeyNoChangedTime 0;        KeyOld0;    KeyCurrent0;    TMOD 0xF0;           //TMOD低四位控制定时器0    TMOD | 0x01;           //选择16位定时模式    ET0 1;                //允许定时器0中断    TR0 1;                //启动定时器0 } //定时器0中断处理 volatile UINT8 idata KeyValue0;Flag0,KeyX0,KeyY0,KeyXY0; code KeyMap[]{0x44,0x81,0x41,0x21,0x11,0x82,0x42,0x22,0x12,0x84,0x24,0x14,0x88,0x48,0x28,0x18};                                     void Timer0_ISR(void) interrupt 1 {    UINT8 i;    //定时    TH0(65536-Fclk/1000/12*515)/256;    TL0(65536-Fclk/1000/12*515)%256;    //开始按键扫描    KeyCurrent~P1;    //按键发生了变化    if(KeyCurrent ! KeyOld)    {        KeyNoChangedTime0;             KeyOldKeyCurrent;             return;    }    else    {            if(KeyNoChangedTime1) //时间到            {          KeyNoChangedTime1;                     KeyPressKeyOld;            }    }       //---------------    switch(Flag)    {       case 0:             P00x0F;              Flag1;                    break;       case 1:              KeyX~P0 0x0F;                 if(KeyX ! 0x0) Flag2;              else KeyXY0;                     break;            case 2:              P00xF0;              Flag3;                    break;            case 3:              KeyY(~P0 0xF0)4;              if(KeyY ! 0x0) Flag4;                    else KeyXY0;                    break;                     case 4:               Flag0;                     if(KeyXY0)                     {                      KeyXY KeyY4 | KeyX;                                         for(i0;i16;i)                             {                                if(KeyXYKeyMap[i])                                {                                   KeyValuei;                                   break;                                }                             }                              }                     break;          }                                   } BOOL GetKey(UINT8 key) {    return (BOOL)(KeyPresskey 0x1); } void Delay(UINT16 millisecond) {              if(millisecond10)    {        UINT8 ms  (UINT8)millisecond;             UINT8 num200;             while(ms--) while(num--);    }    else    {       UINT8 num10;       while(millisecond--)while(num--);     } } //-- sfr P4 0xE8; sbit P4_0P4^0; void Sound(UINT16 millisecond) {      P4_00;            Delay(millisecond);     P4_01; } //-- void Uart_Init(void) {    EA0;                                //暂时关闭中断    TMOD 0x0F;            //TMOD低四位控制定时器1    TMOD |0x20;                        //自动重装模式    SCON0x50;              //串口工作在模式1    TH1256-Fclk/(BitRate*12*16);    TL1256-Fclk/(BitRate*12*16);    PCON|0x80;             //串口波特率加倍    ES1;                   //串行中断允许    TR11;                  //启动定时器1    REN1;                  //允许接收    EA1;                   //允许中断 } volatile BOOL Sending; void Uart_ISR(void) interrupt 4 {    if(RI)  //收到数据    {       RI0;  //清中断    }    else    {       TI0;            SendingFALSE;  //清正在发送数据    } }                                                                                       void PutChar(UINT8 c) {     SBUFc;          //把字符写入发送缓冲区          SendingTRUE;          while(Sending);  //等待发送完毕 }   code UINT8 HexTable[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}; void PutHex(UINT32 x,UINT8 Num) {     INT8 i;          UINT8 Hexs[9]{0,\0,\0,\0,\0,0,\0,\0,\0};            if(Num1)Num1;          if(Num8)Num8;                                                                                                                   for(iNum-1;i0;i--)          {             Hexs[i]HexTable[(x 0xF)];             x 4;           }           Print(Hexs); }   void Print(char * str) {    while((*str)!\0)    {       PutChar(*str);            str;    } } ---------------- main.c ---------------- #include REGX52.H #include ..\common\stc89c52.h  void main(void) {          UINT8 i;   STC89C52_Init();   //发送信息   Print(Hello C51!\r\n);   //蜂鸣器自检   Sound(200);   //LED自检   for(i0;i8;i)   {      SetLed(i,TRUE);           Delay(100);           SetLed(i,FALSE);   }     while(TRUE)   {      Leds~KeyPress;                      if(KeyValue!0xFF)           {                    PutHex(KeyValue,9); Print(\r\n);              KeyValue0xFF;           }   } } 其实上面的C51程序很简单有C功底的人一看就会。不过学ARM却不这么容易了想在ARM上编写一个最简单的“Hello world”就需要做很多初始化工作。做了近一年的.Net Micro Framework porting工作的我要想实现这一步还真不容易不过真正学好单片也不容易。可见站在别人战车上习惯了自己下来走两步竟不知道如何举步了。VS2008、VS2010等高级开发工具的出现对我们来说是福是祸我们不难想见。    十年软件十年硬件一步一个脚印只要努力就有希望 转载于:https://www.cnblogs.com/yefanqiu/archive/2009/10/26/1590297.html

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

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

相关文章

刷赞网站怎么做的外贸网络推广招聘

---恢复内容开始--- 之前在写项目的时候,发现原本想让父子元素之间加点边距,却让父元素产生了margin-top,于是百度之后发现了原因。 在css2.1盒模型中 In this specification, the expression collapsing margins means that adjoining ma…

如何选择企业建站公司jsp网站建设美食

当然,理解纯CSS选择器(CSS Selectors)对于进行UI自动化测试非常重要。CSS选择器允许您通过元素的属性、层级关系、类名、ID等来精准定位页面上的元素。下面我将详细讲解CSS选择器的常见用法,并结合您的需求提供具体的示例。 1. 基…

做h5动画的素材网站h5海报是什么意思

LOL手游国际服已经于10月27日开服(苹果为10月28日开服),LOL手游官方为大家准备了开服活动。各位玩家可以通过参与活动获得免费皮肤。为了迎接新玩家的到来,LOL手游官方推出了新手活动《WILDRIFTACADEMY》,玩家需要用五天时间完成该活动&#…

制作网站软件免费网站建设是什么意思

Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln();这里的printfln()就是一个方法,System是系统类,out是对象。1.什么是方法?方法是语句…

网站后台视频教程wordpress导航自定义

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

购买一个域名能建几个网站室内设计3d效果图用什么软件

Vue3【十二】09Computed计算属性 计算属性 获取全名 这种方式是只读的不能修改 这样定义fullName是一个计算属性&#xff0c;可读可写 案例截图 目录结构 代码 Person.vue <template><div class"person"><h1>我是 Person 组件</h1>姓&…

做网站有哪些苏州网站设计选哪家

在第2章节中&#xff0c;我们介绍了如何通过Spring Boot来实现HTTP接口&#xff0c;以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是&#xff0c;这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点&#xff0c;…

石家庄站列车时刻表手机上怎么设计logo

在PyTorch中&#xff0c;state_dict是一个非常重要的概念&#xff0c;它是一个包含模型参数的字典对象。每个模型的state_dict都包含了该模型的所有参数&#xff08;权重和偏置等&#xff09;&#xff0c;用于在训练和推理过程中重现模型的内部状态. pytorch 中的 state_dict 是…

企业网站美化牛商网网站做seo好么

软件工程文档 文档是软件开发使用和维护当中必备的资料&#xff0c;文档主要是管理人员、开发人员、操作人员、用户人员之间进行协商沟通的桥梁。 1.可行性分析文档 主要是说明软件在经济上&#xff0c;技术上和市场情景等方面的可行性。根据这个文档&#xff0c;公司判断软件能…

phpnow 新建网站枣强网站建设

连续写了两篇文章&#xff0c;这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求&#xff0c;就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepo…

个人网站wordpress新闻头条最新消息今天发布

在php中&#xff0c;如何判断[1,0,1]和[ [0, 0, 0],//体质正常 [1, 0, 0],//气虚体质 [0, 1, 0],//血瘀体质 [0, 0, 1],//阴虚体质 [1, 1, 0],//气虚兼血瘀体质 [1, 0, 1],//气虚兼阴虚体质 [0, 1, 1],//血瘀兼阴虚体质 [1, 1, 1],//气虚兼血瘀兼阴虚体质 ];中的第n项相等&…

自己做网站新手入门阿里巴巴外贸网站首页

maven常见问题问答 收藏转载于:https://www.cnblogs.com/shl-2012/p/3530548.html

淄博高端网站企业网站注册官网

在Python中&#xff0c;主函数通常指的是脚本的入口点&#xff0c;也就是当你直接运行一个Python脚本时&#xff0c;会首先执行的函数。在大多数Python脚本中&#xff0c;主函数并不是通过main()这样的函数名来定义的&#xff0c;而是通过检查脚本是作为模块导入还是被直接运行…

湖南网站建设 尖端磐石网络软装设计师招聘

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池&#xff0c;只不过内部做了很多优化&#xff1a;自动伸缩内存池大小&#xff0c;合理切割内存块。 基本概念&#xff1a; Page&#xff1a;页&#xff0c;一块 8 K大小的内存空间。Go向操作系统申请和…

淘客网站如果做优化更新网站要怎么做呢

Unity的渲染管线&#xff08;Rendering Pipeline&#xff09;负责将游戏场景转化为可以在屏幕上显示的像素。 Unity 提供以下渲染管线&#xff08;官方文档的介绍&#xff09;&#xff1a; 内置渲染管线是 Unity 的默认渲染管线。这是通用的渲染管线&#xff0c;其自定义选项…

做电影网站的服务器抖音电商培训

有一张表&#xff0c;id是主键&#xff0c;这样的写法可以返回一条记录&#xff1a;复制代码 代码如下:“SELECT * FROM t HAVING idMIN(id);”但是只是把MIN换成MAX&#xff0c;这样返回就是空了&#xff1a;复制代码 代码如下:“SELECT * FROM t HAVING idMAX(id);”这是为什…

农博园网站建设投标书长春模板网站建设企业

从版本4开始&#xff0c;MongoDB支持 事务。事务是建立在 会话之上的&#xff0c;因此&#xff0c;需要一个活跃的 ClientSession。 除非你在你的应用程序上下文中指定一个 MongoTransactionManager&#xff0c;否则事务支持是 DISABLED&#xff08;禁用的&#xff09;。你可以…

如何网站防止采集携程网站建设的意义

客户端测试面临的挑战 难点&#xff1a; 业务复杂&#xff0c;产品多&#xff0c;技术栈多样 测试过程的痛点&#xff1a; 配置-》执行-〉检查-》结果 手工测试前置配置操作极其繁琐&#xff1a;安装测试包-〉进入debug页面-》设置h-〉设置AB test-》锁定rn包-〉进入业务页…

网站推广建设期有什么公司是建设网站的吗

MySQL查询数据 SELECT基本查询 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句&#xff0c;可以做下面的事&#xff1a; 列选择&#xff1a;能够使用 SELECT 语句的列选择功能选择表中的列&#xff0c;这些列是想 要用查询返回的。当查询时&#xf…

海外手表网站济南网站建设工作室

在JavaScript中&#xff0c;可以使用console.time()和console.timeEnd()来控制执行时间的命令。 console.time()用于开始计时&#xff0c;可以指定一个标识符作为参数&#xff0c;用于标识计时器。 console.time(query); // 执行查询操作 console.timeEnd(query); 执行上述代…