单片机编程
文章平均质量分 59
zwb_578209160
这个作者很懒,什么都没留下…
展开
-
MCU--几种常见通讯总线
在单片机的应用中,通信协议是其中必不可少的一部分,上位机与下位机,单片机与单片机,单片机与外设模块之间的通信都需要通信协议实现信息交换和资源共享。由于设备之间不同的传输速率、电气特性、可靠性要求的不同,也产生了许多类型的适用于不同情况的通信协议,并被广泛的接受和使用。1、UART和USART分别名为通用异步收发器和通用同步异步收发器,速率不快,可全双工,结构上一般由波特率产生器、UART/USART发送器、UART/USART接收器组成,硬件上两线,一收一发。在UART和USART 有可以扩..原创 2021-05-24 09:47:07 · 5345 阅读 · 0 评论 -
MCU--低功耗处理流程
现在电子产品一般都有要求低功耗,不同的MCU,进入低功耗的处理流程可能不一样,但是大致的流程还是一样。现对MCU进入低功耗的处理流程大致如下:(1)关闭MCU之外的外设电源,例如:RS485、CAN收发器模块的供电;(2)对已初始化的MCU片上外设模块进行反初始化,例如:定时器、ADC等等;(3)如果在低功耗模式下要进行定时唤醒,那此时就初始化RTC功能;如果需要外部中断唤醒,此时就需要配置相应的外部中断;(4)对初始化了的IO口进行反初始化,若IO外部被上拉到高,则配置IO推挽输出高电平;原创 2021-05-17 12:00:39 · 1281 阅读 · 0 评论 -
MCU--新塘N76E003--创建工程
一、准备工作1、下载编译工具keil c512、下载N76E003提供的 板级支持包(BSP),可到 nuvoton上下载二、开发环境搭建1、安装keil c51,然后和谐。。。不能随便发链接所以软件需要自己网上找一下,很多。2、安装N76E003 keil支持包Nuvoton_8051_Keil_uVision_Driver_v2.00.6561.exe(在N76E003提供的 板级支持包(BSP)中),这样可以在keil 的device中找到N76E0033、安装nu-link驱动 N转载 2021-04-24 09:13:21 · 1937 阅读 · 0 评论 -
MCU--常用于单片机的接口适配器模式C语言实现
前言通俗的讲,适配器模式是将一个类的接口转换成客户希望的另外一个接口,在我们编写程序的时候,尤其是在我们使用到单片机做项目的时候,经常会用到。但是往往我们做项目写程序的时候,并没有想到那么多,如果在不带操作系统的情况下,想要整个框架易于移植,易于理解,那么我们真的需要好好想想这个设计模式怎么写了。下面我根据自己的项目经验,来说说适用于单片机的接口适配器模式的实现。大佬勿扰,多多指教。一般实现在我们做项目的时候,一般的实现,可能我们会这样写代码/...转载 2021-04-16 09:42:46 · 889 阅读 · 0 评论 -
C语言--状态机模块实现
1. 状态机模块实现状态机编程思想,能够使复杂的逻辑代码变得更加的简单,且逻辑思路更加清晰严谨。下面根据另一篇博文介绍的状态机思想,用C语言实现了状态机可复用的模块化代码。状态机 fsm.h 头文件代码如下:#ifndef _FSM_H_#define _FSM_H_ #include <stdint.h>#include <stddef.h> typedef struct FsmTable_s{ uint8_t event;转载 2021-04-16 08:51:17 · 1041 阅读 · 0 评论 -
C语言--实现状态机
关于状态机,基础的知识点可以自行理解,讲解的很多,这里主要是想写一个有限状态机FSM通用的写法,目的在于更好理解,移植,节省代码阅读与调试时间,体现出编程之美。传统的实现方案 if...else : 搞一大堆if else, 一个函数写很长很长...... swich...case : 也搞一大堆一个函数写很长很长...... 先来看看最近做的一个项目,无线通信协议实现的状态机是什么样子的: 有三种类型的事件:上层下达的命令事件;下层到达的标志和数...转载 2021-04-01 16:45:59 · 1532 阅读 · 0 评论 -
C语言--NTC阻值转温度算法
1、常见的NTC类型(1)3435;(2)3950;2、温度转换的常用方式(1)查表法;(2)表达式直接转换;3、NTC阻值转温度算法 因为NTC的温度与阻值并不是线性的关系,所以需要算法来计算NTC阻值所对应的温度。#include <math.h>static const float Rp = 10000.0f; //10K static const float T2 = (273.15f+25.0f);//T2 static const..原创 2021-03-30 16:03:47 · 3991 阅读 · 1 评论 -
MCU--时间片&分时轮询
目录1、任务调度2、"先来先服务调度"与“前后台架构”1)先来先服务调度2)先来先服务VS前后台架构3、时间片调度-(也叫RR调度)4、最后小结1、任务调度任务调度对于电子类或者自动化类专业小伙伴最早接触一般都是在接触RTOS后了,然而对于计算机相关专业的小伙伴应该在学《计算机操作系统》老师对这一块讲解的非常清楚了,包括一些性能指标的定义与计算等等,不过作者这里仅仅只针对RTOS进行讲解,大家感兴趣可以找一下操作系统的书籍更加深入学习。大家都知道我们的...转载 2021-03-23 10:01:21 · 2223 阅读 · 1 评论 -
MCU--应用程序架构
对于单片机程序来说,大家都不陌生,但是真正使用架构,考虑架构的恐怕并不多,随着程序开发的不断增多,本人觉得架构是非常必要的。发现真正使用架构的并不多,而且这类书籍基本没有。好不容易找到份资料,可以参考:《谈谈怎样架构你的单片机程序》。 本人经过摸索实验,并总结,大致应用程序的架构有三种:1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。2.时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。3.操作系...转载 2021-03-18 11:50:57 · 1588 阅读 · 0 评论 -
Flash--基础认识
1、空间划分块(bank) > 扇区(sector) > 页(page)一般一个扇区(sector)多个页(page) , 一个块 (bank)又有多个扇区(sector)。2、举例以W25Q128为例:128Mbit的容量。每页256字节,一共65536个字节,合计65536*256*8=134,217,728bit ,等于134,217,728/1024/1024=128Mbit.每次编程数据为256字节。擦除可以按16页(即一个扇区擦除,4K)、按128页擦除(3...原创 2021-03-02 10:09:09 · 3505 阅读 · 0 评论 -
Flash--提高flash的使用寿命(1)
提高flash使用寿命的技巧1、Flash器件的写入步骤1)读取扇区内所有数据到RAM中;2)把需要写入的数据写到对应的RAM;3)擦除扇区;4)把RAM中的数据写入到flash中;2、提高使用寿命技巧:(1)基于flash在写入前要擦除整个扇区的特点,在成本允许的情况下,尽可能地选取扇区小的芯片,可以加快写入速率,提高可靠性;(flash的选择)(...转载 2021-03-02 09:29:31 · 2174 阅读 · 0 评论 -
STM32--HAL库中CAN的接收和发送函数
先来看看can外设相关的中断向量表: EXPORT CAN1_TX_IRQHandler [WEAK] EXPORT CAN1_RX0_IRQHandler [WEAK] EXPORT CAN1_...转载 2020-11-01 11:00:11 · 14174 阅读 · 0 评论 -
C语言--“高内聚,低耦合”编程思想
1、定义高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。2、概念耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高原创 2020-05-29 18:30:17 · 4608 阅读 · 0 评论 -
STM32--STM32F051 IAP的实现
一、IAP原理及过程《正点原子--STM32F10x串口IAP实验》《stm32f030 IAP》《STM32F051 IAP源码分享》二、遇到的问题1、中断向量表的充定向问题(1)与M3核的单片机由区别 1)、STM32F0系列没有void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)这个函数,所以不能像其他系列的那样设置中断向量表; 2)、M0核中需要把APP部分中的中断向量表重定向到SRAM中(在...原创 2020-05-26 18:12:13 · 3666 阅读 · 0 评论 -
C语言--volatile关键字
因时间原因还没有对volatile关键字进行总结,先放上几个不错的总结博客,以防后续遗忘。1、《C语言再学习 -- 关键字volatile》2、《C语言中volatile的用法及意义》3、《详解C中volatile关键字》以下几种情况需要用到volatile关键字:1、并行设备的硬件寄存器(如:状态寄存器)存储器映射的硬件寄存器通常也要加 voliate,因为每次对它的读写都可能有不同意义。 #define GPC1CON *((volatile un...原创 2020-05-10 17:21:14 · 2820 阅读 · 0 评论 -
使用STVP解除STM32flash读出保护
1、打开STVP软件,选择好芯片型号;2、进入option byte界面3、点击菜单栏中的program,然后选择下拉框中的“current tab”一般通过以上方法就可以解除读保护了。网友给出其他的方法:https://blog.csdn.net/qq_25186745/article/details/53607702...原创 2020-04-28 20:54:27 · 4922 阅读 · 1 评论 -
ST LINK utility 软件的使用
1、软件功能:可以对STM32的hex、bin文件进行烧录;2、使用步骤和软件获取,参考博客:https://blog.csdn.net/ybhuangfugui/article/details/52597133;3、注意事项: (1)当MCU分为Bootloader和APP两部分时,在烧录bootloader时,如果不把整块flash擦除,那么除bootloader所占空间...转载 2020-04-28 20:54:59 · 4270 阅读 · 0 评论 -
MSP430单片机多机通信总结
1、硬件条件:MSP430F149;2、编译环境:IAR5.3;3、过程中所发现的问题(1)串口配置所存在的问题主机的程序也需要设定为多机模式,并且主机也需要有地址 !a)、主机串口配置程序void usart1_init(void){ U1CTL |=SWRST; //SWRST复位,USART允许 U1CTL=CHAR+MM; //8位数据位,1位停止位...原创 2020-04-28 20:54:09 · 3233 阅读 · 2 评论