-
调试串口时,发现串口会出现频繁跳中断,导致无法执行主循环的问题!调试发现是串口中断硬件BUG:1.USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);使能了接收中断,那么ORE中断也同时被开启了。2.ORE中断只能使用USART_GetFlagStatus(USART1,USART_FLAG_ORE)读到(没有使能USART_IT_E...[详细]
-
一、什么是USMART?USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具。具体工作过程是通过串口发送命令给单片机,然后单片机收到命令之后调用单片机里面对应的相关函数,并执行,同时支持返回结果。二、USMART调试过程:三、USMART应用场景:开发过程中,经常需要修改函数入口参数,查看运行效果的情况下应用非常方便。不用多次下载代码,...[详细]
-
80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。既然这两种单片机外形及内部...[详细]
-
我们知道格雷码计数的特点就是相邻的码字只有一个比特不同,那么我们在设计格雷码计数时找到这个比特取反就是了。找到这个比特的思路:先将格雷码换算成二进制码,此二进制码中从LSB到MSB第一个为''0''的比特对应的格雷码位置即为所需位置,如果全''1''则MSB的位置为所需位置。 下面以循环格雷码为例,给出一个VHDL程序。 LibraryIeee; UseIeee.St...[详细]
-
第一步使用stm32cubeMX配置串口可以在NVIC里面设置串口的优先级,避免bug的出现。第二步生成代码并修改串口打印重定向在usart.c里面添加/***@brief串口重定向*/#includestdio.hintfputc(intch,FILE*f){HAL_UART_Transmit(&huart2,(uint8_t*...[详细]
-
在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNUCompilerCollection),它是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C++和ObjectC等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可...[详细]
-
目前检测温度一般采用热电偶或热敏电阻作为传感器。这种传感器至仪表之间一般都要用专用的温度补偿导线;而温度补偿导线价格很贵,并且线路太长也会影响测量精度。在实际应用中往往需要对较远处(1km左右)的温度信号进行监视。现有的解决方案有很多,例如:①在现场用智能仪表对温度信号进行测量,用计算机作上位机与智能仪表进行通信来实现远程温度监测。采用这种方案要增加计算机设备及相关计算机软件。②NCU...[详细]
-
我们知道,RSR232串行口传输协议的最大有效距离是10M,且为有线传输,这给一些需要远距离传输控制带来很大的不便。根据课题需要,我们设计了一种基于特高频(300M以上)无线传输方法,实际使用效果连好,能满足一般的传输和控制,可应用于微机、单片机等控制领域。对于误码率要求较高的场合,建议采用CRC编码减少误码率。一、调制与发射常见的模拟调制方式有调幅、调频和调相,常见的数字调制方法有频移键...[详细]
-
将我自己在升级过程中的问题记下来。430无线升级,是通过JTAG烧写一个自定义BSL程序,然后通过BSL程序接收应用程序(APP程序)。接收方式多种--UART,IIC,SPI。430手册关于固件升级,也介绍了BSL协议等内容。由于项目需要,采用无线升级,无线模块是SPI接口,也可理解为SPI接收方式。BSL程序和APP程序需作地址空间区分,修改对应的XCL文件。-...[详细]
-
考虑到现有板子上没有fpga,对于dma方式发脉冲做位置控制设计如下两个buffshortbuff1;shortbuff2;里面都存放频率值,也就是说arp寄存器的值。数组的长度为1000,是考虑到最高的脉冲频率,如果最大频率比较小,则可以适当减少数组的大小,之所以定义两个buff,是考虑到每个伺服周期计算填充一个buff,同时另一个buff就作为当前dma之用,每个伺服周期...[详细]
-
BSS(百度百科)是“BlockStartedbySymbol”的缩写,意为“以符号开始的块”。BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维...[详细]
-
加壳是对软件内核一种很有效的保护方式。目前Linux系统下的加壳方法,多是直接继承Windows程序的加壳理论和方法,在传统加壳工具上进行了有限的扩展,单纯在LINUX系统下实现的加壳工具还是很少的。如何在Linux系统下尽量减少内核信息的暴露,增加有难度的反逆向手段来提升破解难度,对加壳保护程序进行很好的隐藏,都是目前主要攻克的难题。根据加载外壳程序方式的不同将现有软件加壳技术分为:...[详细]
-
STM32的输入输出管脚有下面8种可能的配置:1.浮空输入2.带上拉输入3.带下拉输入4.模拟输入5.开漏输出6.推挽输出7.复用功能的推挽输出8.复用功能的开漏输出GPIO_Mode的几种方式:GPIO_Mode_AIN模拟输入GPIO_Mode_IN_FLOATING浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入G...[详细]
-
注意ucos代码(也就是main函数中的代码)和启动代码都是在Supervisor模式下工作的。而IRQ是工作在外部中断模式下的,这两种模式用的寄存器组是不一样的,因此切换模式时要注意保持相应的寄存器。假如我设定定时器2每自减100就产生一次IRQ中断,定时的时间到了之后就产生中断(定时器如何设定这里不讨论):(1):如果让CPU能够处理中断,即不屏蔽IRQ中断,则需用户手动设定CR...[详细]
-
在单片机应用系统中,按键主要有两种形式:1、直接按键;2、矩阵编码键盘。直接按键的每个按键都单独接到单片机的一个I/O口上,直接按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别。下面我们以S51增强型单片机实验板的直接按键来学习单片机轻触按键在单片机系统中的应用。
S51增强型单片机实验板的4个轻触按键原理图
图1 S51增强型...[详细]