- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 数字电路-八路抢答器的设计(proteus仿真)
八人参赛,即需要有八个抢答按键,按键按下产生抢答信号,当抢答信号产生后其他按键再次按下时无效,所以我们需要一个锁存器,锁存第一次按下的状态,这里选择74LS373。同时因为74LS48使用的是二进制编码,而我们的八路按键是十进制编码,所以再加一个8-3线译码器74LS148。倒计时显示同样使用74LS48+七段共阴数码管实现,倒计时计数使用两位74LS192芯片级联实现。抢答号码的显示通过7段数码管实现,这里选择七段共阴数码管,驱动芯片使用74LS48。3. 5号选手按下抢答键,倒计时停止,显示抢答号码。
2023-04-27 15:34:59
13238
6
原创 float型数据不能比较相等?为什么?
早就听说float型数据不能比较相等或不等,只能比较大小,也一直在程序中避免做相等的判断。但是一直不知道具体原因,直到最近做了一个详细的调查。
2022-10-10 16:14:52
2544
2
原创 MDK537添加ARMCC编译器(Missing: Compiler Version 5的解决办法)
MDK537手动添加ARMCC编译器,Missing:Compiler Version 5的解决办法
2022-08-25 23:17:35
8331
3
原创 MSP430系列教程(一) 开发环境搭建(IAR for MSP430 v7.10.1)
MSP430开发环境搭建IAR for MSP430 7.10.1
2022-08-01 19:15:21
7493
5
原创 proteus8.9闪退解决办法(亲测有效)
win10安装proteus8.9以后经常出现闪退的情况,网上搜到的大部分都在说是安装路径的原因。但是我这里两台电脑,一台修改了安装路径解决了闪退;另一台却并没有生效,不管怎么设置安装路径,总有闪退的情况。摸索了半天,终于找到了终极解决办法!那就是安装8.13版本!哈哈哈哈!搜索关注微信公众号“嵌入式小学生”,回复“proteus”,获取8.13版本proteus安装包。...
2022-06-27 22:54:57
4273
3
原创 STM32WB55更新FUS及协议栈固件的方法
下载安装STM32CubeProgrammer获取stm32wb系列软件包打开STM32CubeProgrammer,使用STLINK方式连接打开Firmware Update Service界面,启动FUS,读取FUS信息。注意我这里的FUS version是v1.2.0,但STM32WB55芯片出厂时的FUS版本时v0.5.3,该版本不可以直接用来升级协议栈,必须先升级FUS版本才可以。升级方法见步骤6更新协议栈固件,点击Browse选择要烧写的固件,我这里选择的是BLE协..
2022-05-05 17:30:28
770
2
原创 C语言问题
代码#include <stdio.h>typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;int main(void){ uint16_t b; uint32_t c; b = 32760; c = 32760; printf("b %d, %0.2f\n", (b-32768), (b-32768)*0.
2022-03-10 11:39:08
967
原创 STM32 HAL库串口发送时不能接收的问题调查
STM32 HAL库串口发送时不能接收的问题调查问题分析解决办法后续问题分析最近发现使用STM32官方的HAL库实现串口收发(发送使用的查询方式,HAL_UART_Transmit接口;接收使用的中断方式,HAL_UART_Receive_IT),有时候会出现接收不到数据的情况,撸了一遍代码,发现官方库中存在bug。先看HAL_UART_Transmit的实现方式,代码如下:HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,
2022-02-28 18:22:22
4656
3
原创 Linux printf输出重定向及添加时间戳
Linux printf输出重定向及添加时间戳代码输出结果代码#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <time.h>#include <string.h>FILE* fp = NULL;char *get_cur_time(){ static char s[32] = {0}; time_t t; struct
2021-11-16 19:01:59
2755
1
原创 STM8L052使用官方库编程的注意事项(持续更新)
最近项目用到了STM8L052这颗片子,陆陆续续的踩了不少坑,趁着有时间整理出来,废话说完,开始更新。
2021-09-13 18:55:37
1747
原创 Ubuntu系统下ARM交叉编译环境的搭建
为什么要搭建交叉编译环境?交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。简单来说,我们在PC平台上直接使用gcc编译出来的程序在ARM平台上是不能执行的,所以必须使用交叉编译工具来进行编译,“交叉”的意思就是,在PC平台编译,在ARM平台上运行。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链,arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linu
2021-09-05 20:36:35
1711
原创 数字电路水位监控系统的设计与实现(基于proteus仿真)
数字电路水位监控系统的设计与实现设计要求设计实现系统概述单元电路设计按键电路模拟水位的设计电机控制电路设计水位显示电路设计设计要求设计一个水塔水位监控数字电路,要求将水塔控制在1-5米,低于1米时进水电机工作,高于5米时排水电机工作。同时,需要实时显示当前水位。设计实现系统概述我们使用Proteus来进行电路仿真,使用按键开关来模拟水位信号,使用74L147芯片来对当前水位进行编码,使用74LS48与七段数码管将编码后的水位进行显示,使用L9110驱动直流电机来模拟进水与排水电机的工作。单元电路
2021-07-08 22:26:45
9017
1
原创 MDK(keil)单步调试按照汇编语言执行的解决办法
Keil单步调试按照汇编语言执行的解决办法:将keil工程路径中的中文字符换成英文即可。MDK工程路径不可包含中文,否则在单步执行调试时会按照汇编语言进行单步执行。MDK注册机下载地址
2021-01-20 11:40:20
1884
3
原创 数字电子钟的设计与实现(纯数字电路,Proteus仿真)
数字电子时钟设计与实现设计要求设计实现系统概述单元电路设计555 定时器计数电路显示电路设计要求1.采用12小时的计时方式。2.四位数码管显示时、分,小时和分钟间的小数点以1Hz的频率闪烁表示秒。3.具有快速校时和校分的功能。设计实现系统概述首先,思考时钟的工作方式,六十秒进一位,六十分进一位,十二个小时归零。因为是要通过产生秒脉冲,显示时与分,所以第一应该思考如何产生秒脉冲。可以通过555 定时器外接RC元件构成多谐振荡电路产生秒脉冲。在秒脉冲下,如何通过计数器,实现进位,60s进1min,
2021-01-19 15:17:58
24223
4
原创 HardFault_Handler的问题定位方法(基于MDK 5)
@[TOC](HardFault_Handler的问题定位方法)# 问题描述在嵌入式软件开发过程中,引起HardFault的原因一般是内存问题,比如内存溢出,访问越界,堆栈溢出等。在HardFault发生时,会触发HardFault_Handler中断,进入一个while(1);死等的状态,很多人在这个时候不知道怎么定位问题,只能先缩减问题代码范围然后再逐行检查。但这种方式很耗时间,效率很低。# 解决办法通过MDK自带的调试窗口可以很好地定位问题:进入debug,通过“菜单栏->View-
2021-01-18 15:16:16
1806
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人