自创源码
天堂陌客
综合性人才,全栈工程师
展开
-
数码管、lED显示相关代码
#include "NixieTube_Drv.h"#include "Display_Lib.h"#ifdef NixieTube_ENstatic void Disp_String(char * src){ uint8_t wei = 0; for(uint8_t i = 0 ;i < 10 ; i ++) { if(*(src + i + 1) == '.' )...原创 2019-11-26 16:58:30 · 2056 阅读 · 0 评论 -
KEIL 增加自定义的DEBUG_PRINTF , 使用WATCH窗口显示
使用说明包含DEBUG.h文件之后使用DEBUG_PRINTF打印想要显示的内容,然后将DEBUG_PRINTF_BUF数组添加到watch窗口中打印的数据会在watch串口显示#define QUEUE_DEPTH 20 //显示记录的条数#define QUEUE_BUF_SIZE 50//每条记录的最大长度DEBUG.c#include "DEBUG.h"#include ...原创 2019-11-25 16:22:03 · 1887 阅读 · 0 评论 -
单片机使用普通IO口,实现多路带虚拟DMA的虚拟串口,C语言代码
概述使用stm32的时候,有时候为了减少成本,又需要用到多个串口,在整个程序影响不大的情况下,可以使用虚拟串口来实现串口数据的收发。本文的虚拟串口程序是因公司的项目需要,自己写的,亲测可用,记录在这里,方便有需要的人用。很些串口配置功能还没有实现,因为公司项目急,暂时只做了需要的功能进去。有兴趣的朋友可以自己进行修改。这个虚拟串口有几个优点:1、自带虚拟DMA功能,收发数据无需等待,对其...原创 2019-11-21 09:33:57 · 747 阅读 · 0 评论 -
用 keil 实现 linux里的 MOUDLE_INIT 功能
初学LINUX,发现LINUX里驱动初始化函数只要用MOUDLE_INIT修饰一下,在程序运行的时候就会自动调用初始化函数执行,非常炫酷。那么使用keil编译器写单片机程序的话能不能这样呢?于是花了点时间写了一个小小的框架,可以在keil的单片机模拟LINUX包括file_operations,open,write这些功能。下面贴下我的框架代码。#ifndef _VFS_H#define...原创 2019-11-12 16:42:59 · 764 阅读 · 0 评论 -
STM32CubeMX USART串口DMA,IDLE 空闲中断不定长接收详解
使用的STM32CubeMX版本为:首先是串口配置:中断配置DMA的模式选择NORMAL就行这里默认就好~大功告成之后生成工程代码~void MX_USART1_UART_Init(void){ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = ...原创 2019-07-02 14:11:58 · 14595 阅读 · 8 评论 -
STM32 HAL FLASH 读写例程
//FLASH写入数据测试void Flash_WriteData(uint32_t addr,uint16_t *data,uint16_t Size){ //1、解锁FLASH HAL_FLASH_Unlock(); //2、擦除FLASH //初始化FLASH_EraseInitTypeDef FLASH_EraseInitTypeDef f; ...原创 2019-06-11 14:34:16 · 9761 阅读 · 1 评论 -
C语言 滤波 去掉一个最大值,去掉一个最小值,求平均值
//去掉一个最大值,去掉一个最小值,求平均值#define BUF_DEEP 3#define CHX_NUM 3static uint32_t ValueFiltrate(uint8_t chx,uint32_t Value){ static uint32_t ValueTempBuf[CHX_NUM][BUF_DEEP]; static uint8_t point[CHX_NUM]...原创 2019-06-13 13:40:17 · 11824 阅读 · 0 评论 -
C# 写上位机学习笔记
打开文件 private void buttonOpenfile_Click(object sender, EventArgs e) { try { //在浏览的时候只显示后缀为db的文件 fd.Filter = "表格文件|*.csv"; ...原创 2019-04-25 10:02:44 · 1933 阅读 · 2 评论 -
c#关于“线程间操作无效: 从不是创建控件的线程访问它”的另类解决办法!
1、CheckForIllegalCrossThreadCalls设置为false。2、委托。感觉都不好。第一种容易出bug,第二种太麻烦。本人也是C#菜鸟,初学不久,被这个问题困扰许久。想了一下,用单片机编程的思想可以很方便的解决这个问题。就是用写队列来处理线程的问题!比如在另外的线程给TextBox_Log写数据。在TextBox_Log所在的线程,定义一个API接口以及队列。本例...原创 2019-04-13 16:37:54 · 370 阅读 · 0 评论 -
12864液晶屏驱动源码分享
首先是最底层驱动:在这里插入代码片void delay(u16 count){ while(count--) { }}void lcd_load_1byte(u8 data,u8 mode){ u8 i=0; u8 buf; if(mode==0)//命令 { for(i=0;i<8;i++) { buf=data&0x01; swi...原创 2019-03-27 23:19:24 · 963 阅读 · 0 评论