自己在做裸机实验有时候在printf中加入“\n\r”换行符时会莫名跑死,哪怕都没执行printf也会跑死,程序本身确定没有问题而且只要去掉换行符就恢复正常,不限程序,有时候却不会出现问题,串口和格式化输出程序都是用的原子提供的,就很迷,有人遇到这种情况吗?
用数码管做了数字钟,运行没有什么问题,但是加了流水灯之后,数码管会闪烁,这是怎么回事?应该怎么解决?求大佬指教! 代码如下:#include<regx51.h> #define uint unsigned int #define uchar unsigned char sbit s1 = P3^2;//闹钟开关 sbit s2 = P3^3;//设置 sbit s3 = P3^4;//小时键 sbit s4 = P3^5;//分 sbit s5 = P3^6;//退出键 sbit fs = P3^0;//蜂鸣器 sbit d = P3^1;//小灯 unsigned char mfsw;//秒,分,时,计数器 uchar f_naos_nao;//闹钟分,时 bit flag_nao;//闹钟标志 void zuo(); void you(); void delay(uint i); //void ledscan(uchar huchar muchar s); void alarm(); void tiaojie(); void delay(uint i) { while(i--); } void zuo() {unsigned char d; unsigned char a = 0x01; for(d = 0;d<8;d++) { P0 = ~a; delay(1); a = a<<1; } if(a == 0) { a = 0x01; } } void ledscan(uchar huchar muchar s) reentrant { uchar LED[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; uint j; P1 = LED[s%10]; P2 = 0x7f; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[s/10]; P2 = 0xbf; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0Xdf; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m%10]; P2 = 0xef; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[m/10]; P2 = 0xf7; for(j = 0;j<100;j++); P2 = 0xff; P1 = 0x40; P2 = 0xfb; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h%10]; P2 = 0xfd; for(j = 0;j<100;j++); P2 = 0xff; P1 = LED[h/10]; P2 = 0xfe; for(j = 0;j<100;j++); P2 = 0xff; } void tiaojie() { if(s3 == 0) { ledscan(sfm); if(s3 == 0) { if(s == 23) s = 0; else s++; while(!s3)ledscan(sfm); } } else if(s4 == 0) { ledscan(sfm); if(s4 == 0) { if(f == 59) f = 0; else f++; while(!s4)ledscan(sfm); } } }void alarm() { //uchar a; if(flag_nao) { if(f==f_nao&&s==s_nao) { while(m<=5&&flag_nao) { fs = ~fs; ledscan(sfm);} } } } void t0() interrupt 1 { TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; w++; if(w == 20) { w = 0; m++; if(m == 60) { f++; m = 0; if(f == 60) {s++; f = 0; if(s == 24) s = 0;} } }zuo(); } void guan_naozhong() interrupt 0 { flag_nao = ~flag_nao; d = ~d; while(!s1)ledscan(sfm); } void naozhong()interrupt 2 { f_nao = f; s_nao = s; while(s5) { ledscan(s_naof_nao0); if(s3 == 0) { ledscan(s_naof_nao0); if(s3 == 0) { if(s_nao == 24)s_nao =0; else s_nao++; } while(!s3) ledscan(s_naof_nao0); } else if(s4 == 0) { ledscan(s_naof_nao0); if(s4 == 0) { if(f_nao == 59)f_nao =0; else f_nao++; } while(!s4) ledscan(s_naof_nao0); } } } void main() { TMOD = 0X01; TH0 =(65536 - 50000)/256; TL0 =(65536 - 50000)%256; TR0 = 1; ET0 = 1; IT1 = 1; IT0 = 0; EX1 = 1; EX0 = 1; PT0 = 1; EA = 1; f = 0; m = 0; fs = 0; flag_nao = 0; while(1) { ledscan(sfm); tiaojie(); alarm(); //zuo(); } }
串口输出变量值一直是0或者一直不变。 用输入捕获实验改的测距实验,测距的时间可以正常输出,但是距离经过运算公式之后就一直输出是0,是咋回事啊。
ADC.C static void ADC_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; // 优先级分组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 配置中断优先级 NVIC_InitStructure.NVIC_IRQChannel = ADC_Channelx; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } static void ADC_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStruct.GPIO_Pin = ADC_GPIO_PIN ; GPIO_Init(ADC_GPIO_PORT &GPIO_InitStruct); } static void ADC_Mode_Config(void) { ADC_InitTypeDef ADC_InitStruct ; ADC_ClkCmd(ADC_GPIO_CLKENABLE); ADC_InitStruct.ADC_ContinuousConvMode=ENABLE; ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right ; ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None ; ADC_InitStruct.ADC_Mode=ADC_Mode_Independent; ADC_InitStruct.ADC_NbrOfChannel=1; ADC_InitStruct.ADC_ScanConvMode=DISABLE; ADC_Init (ADC_x&ADC_InitStruct); ADC_PCLK2_DivCmd(RCC_PCLK2_Div8); ADC_RegularChannelConfig (ADC_x ADC_Channelx 1 ADC_SampleTime_55Cycles5); ADC_ITConfig(ADC_x ADC_IT_EOC ENABLE); ADC_Cmd(ADC_x ENABLE); ADC_ResetCalibration ( ADC_x ) ; while(ADC_GetResetCalibrationStatus(ADC_x)); ADC_StartCalibration ( ADC_x ) ; while(ADC_GetSoftwareStartConvStatus ( ADC_x ) == 1 ); ADC_SoftwareStartConvCmd(ADC_xENABLE); ADC_NVIC_Config(); } void ADC_Config(void) { ADC_GPIO_Config(); ADC_Mode_Config(); ADC_NVIC_Config(); } adc。h #ifndef __ADC_H #define __ADC_H #include "stm32f10x.h" // ADC 编号选择 // 可以是 ADC1/2,如果使用ADC3,中断相关的要改成ADC3的 #define ADC_APBxClock_FUN RCC_APB2PeriphClockCmd #define ADCx ADC2 #define ADC_CLK RCC_APB2Periph_ADC2 // ADC GPIO宏定义 // 注意:用作ADC采集的IO必须没有复用,否则采集电压会有影响 #define ADC_GPIO_APBxClock_FUN RCC_APB2PeriphClockCmd #define ADC_GPIO_CLK RCC_APB2Periph_GPIOC #define ADC_PORT GPIOC #define ADC_PIN GPIO_Pin_1 // ADC 通道宏定义 #define ADC_CHANNEL ADC_Channel_11 // ADC 中断相关宏定义 #define ADC_IRQ ADC1_2_IRQn #define ADC_IRQHandler ADC1_2_IRQHandler //#define ADC_IRQ ADC3_IRQn //#define ADC_IRQHandler ADC3_IRQHandler void ADCx_Init(void); #endif /@@* __ADC_H */
求推荐!!!! 大家用ICCAVR编程,都用什么软件仿真,烧录啊 我每次想使用AVRSTUDIO仿真都得去codevisio上在改,二者编译器不同,很麻烦啊!!!! 求推荐
工业是物联网技术主要应用领域之一。工业物联网是将具有感知、监控能力的各类采集、控制传感器或控制器,以及移动通信、智能分析等技术不断融入到工业生产过程各个环节,从而大幅提高制造效率,改善产品质量,降低产品成本和资源消耗,最终实现将传统工业提升到智能化的新阶段。从应用形式上,工业物联网的应用具有实时性、自动化、嵌入式(软件)、安全性、和信息互通互联性等特点。 工业物联网体系构架分为四层:实体层包括各类智能产品及嵌入式软件和芯片等;传感层是物联网的皮肤和五官,用于识别物体,采集信息,包括条码、二维码标签和读卡器、RFID标签和读写器、摄像头、GPS等;网络层是物联网的神经中枢和大脑,用于信息传递和处理,包括通信与互联网的融合网络、网络管理中心和信息处理中心等;应用层是物联网的“社会分工”,即与行业专业技术即需求实现深度融合,最终实现行业智能化。在物联网各层之间,信息不是单向传递的,也有交互、控制等,所传递的信息多种多样,这其中关键是物品的信息,包括在特定应用系统范围内能唯一标识物品的识别码和物品的静态与动态信息。 我国的工业物联网发展处于什么阶段?工业物联网的发展分为3大阶段: · 1阶段:构建数字化基础· 2阶段:局部性的特定环节和特定领域的优化· 3阶段:整体性的智能化升级 工业物联网有能力将来自生产车间一线的实时数据、自动化/信息化系统的数据、产业链上下游的数据、价值链各环节的数据进行连接和优化,推动全要素生产率的明显提升。 从阶段分布上来看,根据信通院的数据统计,目前处于阶段1的企业占比接近45%,超过30%的企业在阶段2探索到了价值,少数先行者正在向阶段3迈进。 工业物联网和哪些技术发了生深度融合?对于我国来说,5G、边缘计算、人工智能在内的创新技术都是一个机会。 5G在场景设计中,考虑了大连接、低时延等满足工业需求的连接问题;此外,5G本身和其他技术可以构成一个更加优化的组合,比如5G和边缘计算、5G和人工智能的结合,都非常契合工业物联网的未来发展。 边缘计算技术是ICT融合的产物,它和5G、人工智能等技术并不是相互孤立的,而是同时布局。计算下沉到边缘以后,意味着传统的基于流程为核心的生产优化体,我们可以进行实时的数据感知和分析。 工业物联网采集数据,如果这个数据要变成价值的话,最后一公里是要依靠人工智能去实现的。一些质量优化、机器视觉分析的场景,应用工业人工智能都有很好的成效。 工业物联网的市场规模从世界范围内来看,工业互联网的市场潜力十分巨大,据统计2018年全球工业物联网的市场规模约640亿美元,预计到2023年整个产业的规模将超过900亿美元。2018- -2023年的五年间年复合增长率为7.39%。其中亚太地区增速最高,中国和印度等新兴经济体的工艺体系快速发展将为工业物联网领域的发展提供持续不断的动能。 工业物联网的应用场景不仅如此工业物联网的发展将极大的促进一国生产力的提升,工业物联网的应用领域十分广泛,包括电力、能源、制造业、汽车行业、智慧城市、物流航运业等。例如在我国电力行业是物联网实现大面积应用的第一个领域。到2018年底,国网接入的终端设备超过5.4亿只,采集数据日增量超过60TB,覆盖用户4.5亿户,预计到2025年接入终端设备将超过10亿只,到2030年将超过20亿只。 想了解更多关于工业物联网的前世今生?请关注云汉芯城流动直播间,一起分享工业物联网技术与方案直播时间:2021年2月4日19:30 本次直播联合正点原子——原子哥平台共同直播。原子哥平台,聚拢电子技术领域知名讲师,结合理论和实践,由浅入深进行讲解演示,让你快速上手新技术,积累实战经验,提升职场竞争力。 【本次直播主题】1、工业物联网介绍2、工业物联网发展现状3、工业物联网应用案例4、工业物联网技术与挑战5、云汉盛格方案开发服务 【直播福利】直播预约好礼:电子工程师专用PCB尺直播间福利1:直播间3000元现金红包(含助力榜红包)直播间福利2:直播中问答奖品:PPT翻页笔直播间福利3:免费抽奖奖品:正点原子STM32F103开发板、金升阳时尚背包、电容本、JD卡、PCB鼠标垫、PCB尺、新人券(30元)。
芯片技术这么发达了,ARM为什么没有内置eeprom呢,有做了很大的flash,可是每没有见内置eeprom,我只见过stm8可以内置eeprom,可以按字节写和擦除,其他芯片没有。
网上说使用ADC的时候,adc位数不够可以用软件算法提高。这种多次平均滤波的办法,可以提高几位呢?我用单片机自带的ADC,还差两位才能达到需要的精度。我感觉这样做也提高不了多少。
单片机精度AD是12位的,热电偶输出热电势经lm358放大256倍到单片机。 0到400度的理论AD是已经去到0到3996,但是单片机ad值会飘,实际测量效果并不好,连1℃都达不到。 想问一下各位大佬有没有什么好的办法。
看到有文章说滤波的时候提高电容容量可以降低负荷,增加使用寿命,这种说法正确吗?这样做有什么弊端吗?
我现在使用sdio的模式来读写sd卡,cmd8和cmd55acmd41都能正常响应,但是cmd2/3没有响应,发送出去的命令为cmd2:0x42_00000000_4dcmd3:0x43_00000000_21现在的初始化操作顺序cmd0 cmd8 cmd55 acmd41 cmd2 cmd3。而且抓波形发现命令的确都有发送给sd卡,我觉得应该和单片机或者arm操作sd卡是一样的吧,到找了半天资料也没发现问题出在哪里?各位大佬帮帮忙