单片机开发
文章平均质量分 65
我是一个多年单片机开发经验的工程师,这里将分享一些有价值的开发经验。
芯艺
单片机软硬件开发(C语言等)
VC++ VB.net上位机编程
Android App开发
展开
-
STM32F0 UART中断程序
STM32F0的USART发送数据的标志位TC貌似和F1不太一样,在没有数据发送的情况下无法清除掉。所以中断处理程序应如下://USART1中断处理void USART1_IRQHandler(void){ uint16_t isr=USART1->ISR; uint8_t c; //接收到一个字节 if((isr & USART_FLAG_RXNE) == USART_FLAG_RXNE) { c=(uint8_t)(USART1->RD.原创 2021-09-10 09:42:36 · 1284 阅读 · 0 评论 -
RS485芯片与单片机接口中的一个容易忽略的隐患
如下图,这是一个RS485芯片与单片机连接的典型电路,通常我们用一个IO口来控制485的发送与接收选择引脚。那么隐患在哪里呢?在单片机的接收引脚RXD上。当单片机发送数据时方向控制引脚DIR变高,使485芯片处于发送状态,再看看485芯片的内部原理图:当DE和RE两个引脚拉高时,R三态门是处于关闭状态,其输出RO也是处于不稳定的电平状态,输出高还是输出低那要看运气了,如果是高,那你的程序可能没有任何问题,但如果是低那你的程序会出现莫名其妙的问题,原因是单片机的UART是全双...原创 2020-12-09 13:27:42 · 3764 阅读 · 0 评论 -
dsPIC(dsPIC30F4011) Bootloader原理及应用
一.实现原理 1.关于24位指令占用FLASH空间的说明 dsPIC是16位的单片机,每一个指令为24位固定长度,一条指令在FLASH内占用3个字节,但只占用2个字节的地址空间,如果指令字节 和地址空间一一对应来看,那个指令中最高的字节一直在梦游般的游荡在FLASH中,只有一种特殊的办法才能读写这个没有地址的指令 数据。例如、一条指令的开始存放地址为0x000000,那么下一条指令的存储地址是0x000002,一条指令实际为3个字节,为了方便计算xc16 生成的HEX文件中将一条指...原创 2020-11-20 15:40:39 · 2587 阅读 · 0 评论 -
STM32F1 Bootloader(IAP)原理及实现
STM32F1(CORTEX-M3) 支持中断向量重定向,也就是可以重新设置中断向量在FLASH中的地址,这个功能使IAP实现变得非常完美。1.BOOT程序放在flash开始处 如下图,实现Bootloader的程序(BOOT)放到Flash开始地址(物理)处0x8000000,这也是芯片复位后开始执行的地址,上电时BOOT程序先执行。2.主要功能程序 从UART读取数据后写入flash这里不说明,可使用ST库函数轻松实现,以下为如何实现向用户程序的跳转: #defi...原创 2020-11-19 15:03:41 · 1164 阅读 · 0 评论 -
STM32F0 Bootloader(IAP)原理及实现
STM32F0的中断向量默认在FLASH地址0x8000000处,并且只支持中断向量重定向到RAM,为此如果bootloader占用了0x8000000地址后用户程序只能将中断向量复制到RAM运行。1.BOOT程序放在flash开始处 如下图,实现Bootloader的程序(BOOT)放到Flash开始地址(物理)处0x8000000.长度根据boot程序的大小限制一下;下图中设置了前8k为boot程序空间,这个设置要与用户程序的开始地址相匹配;2.主要功能程序 从UART读取数据...原创 2020-11-18 10:03:49 · 3604 阅读 · 1 评论 -
STM8(STM8S003F3) Bootloader (IAP) 升级程序
STM8S003这种片内FLASH只有8k的单片机使用bootloader功能貌似没有必要,但如果你的项目只需要6K的程序空间那剩余的2K用作bootloader也是个非常不错的注意:)一.环境编译:STVD V4.3.5 + COSMIC V4.3.4Bootloader上位机软件: CAS-BOOT二.实现原理 1.FLASH程序存储器应用 STM8S003F3集成8K字节的FLASH程序存储器,其地址范围为0x8000 ~ 0x9fff 其中中断向量...原创 2020-11-14 13:49:56 · 1682 阅读 · 1 评论 -
CAFace微型用户界面管理模块
简介:单片机开发简易的人机交互界面时如果程序组织不好容易导致代码臃肿、不易读、甚至会导致改了这边那头运行出现错误的情况,CAFace正是这样一个界面程序的组织规范,或者说用户界面管理软件模块。它占用空间小、非常适合于8位或低端32位机实现简单的用户操作界面。它能使编程人员将精力集中在功能的实现上而不必为程序的结构花费更多的时间,并且使得以后产品功能的增减变得更加简单,易维护。CAFace版本及说明:CAFace V0.8精简版结构简单、使用灵活,适用于较小的应用,如数码管或段式液晶用户界面,单片机资原创 2020-11-13 12:28:56 · 289 阅读 · 0 评论 -
CAFrame单片机程序框架
CAFrame单片机程序框架简介程序运行优先级CAFrame配置通用事件应用FLowchart流程图简介CAFrame 单片机C语言程序开发框架可用于不同的单片机,尤其适合8位小系统的软件开发。框架将硬件驱动和应用逻辑的实现分开,以事件驱动的方式编写应用程序,从而使得应用功能的编写就如同VB6程序那样简单易维护。框架程序共由三个头文件(CAFrame.h Cfg.h Driver.h)和三个源文件(Driver.c Frame.c App.c)组成其层次结构如图: <img src=lay原创 2020-11-13 09:27:55 · 954 阅读 · 0 评论 -
TesegOS单片机实时操作系统
xOS单片机实时操作系统简介XOS面向8位机或32位低端MCU而设计,是一款简单易用,资源利用率高,代码简洁、 易掌握的微型任务调度器。任务调度策略XOS采用抢占式任务调度策略、已准备好的高优先级任务会通过中断的方式优先得到运行, 相同优先级的任务按准备好时的时间顺序得到执行,同优先等级的任务不会互相抢占。任务数量XOS中不限制任务数量,最多的任务数量取决于硬件资源。应用程序示例 #include "uxos.h" ux_stack_t g_Task1Stack[128]原创 2020-11-10 11:19:25 · 845 阅读 · 0 评论