- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 单片机IO模拟串口程序
有个项目串口不够用,所以打算用IO口模拟一个串口进行通讯。参考了网上的代码,接收方法大同小异,但是发送大多数人都是用阻塞式的。阻塞式优点是可以节省单片机资源,只需要一个准确的延时函数即可。但是CPU在发送期间不能做其他事情,而使用定时器中断发送可解决这个问题,缺点是需要独占定时器。代码在GD32303E开发板上运行通过,使用串口助手收发正常。源文件#include "bsp_io_uart.h"//104us 9600 buad#define UART_IO_DELAY_C
2021-12-14 16:44:26
4963
转载 转载----VIM操作指令
Linux vi/vim所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图 — 入门到进阶什么是 vim?Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,
2021-05-04 11:59:47
265
原创 LED单元板驱动(HUB75接口)
开始之前先吐槽一下,搜这个的资料。要么都是Arduino,要么单片机的收费。小小的一个LED单元板,凭什么?用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指凸。把原理都写出来看你怎么收费。一、接口定义及原理如图,有两个RGB通道,共占用6个IO。剩下的ABCDE为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E。这样就是5位,2的5次方32扫。1.
2021-01-07 13:48:59
20441
27
原创 ART-PI开发记录----1、STM32CUBEMX创建LTDC显示工程
一、前述 ART-PI是RTT官方退出的STM32H7系列的开发板,照理说用RTT开发即可,简洁易上手(如果已经熟悉RTT)。但也可基于STM32CUBEMX开发,生成带FreeRTOS以及FATFS文件系统的工程。相对来说,用ST官方工具生成的代码用起来跟原汁原味一些,但RTT则具有更多的中间件,代码使用起来也更加简洁。个人习惯于使用STM32CUBEMX,所以先记录一下基于CUBE的开发方式,后续会加入RTT。三、STM32CUBEMX的配置 ...
2021-01-05 09:37:03
2415
8
原创 ubuntu下vscode配置终端生成任务以及管理员模式运行
最近根据正点原子的资料学习linux下嵌入式开发,使用VSCODE编辑代码。但是代码下载到SD卡总感觉不太方便,所以研究了一下VSCODE1、配置生成任务 打开VSCODE后,终端->配置任务->使用模板创建tasks.json文件->others,自动创建一个json文件,在.vscode处 然后将其修改如下。{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for th...
2020-09-22 11:39:13
2473
原创 NRF52832----协议栈通用访问规范(GAP)
转载一篇博客,可以简单了解协议栈各个层:https://blog.csdn.net/shunfa888/article/details/80140475在协议栈的“gap_params_init”函数里面,我们可以设置一下参数1、蓝牙连接的安全模式与名字//以下是安全模式设置的宏定义BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);//以下是器件名字的设定err_code = sd_ble_gap_device_name_set(&..
2020-06-15 15:21:48
937
原创 NRF52832----蓝牙协议栈初始化配置
1、配置协议栈时钟与晶振准确度//按照以上路径找到最后一个宏定义“NRF_SDH_CLOCK_LF_SRC”,修改这里即可更改时钟源//外部晶振较省电,因为内部RC校准时必须运行32MHz高速时钟,比外部多9us电流//协议栈使用RTC0作为时钟ble_stack_init -> nrf_sdh_enable_request -> .source = NRF_SDH_CLOCK_LF_SRC//以下结构体成员用来修改晶振的准确度,根据自己晶振的规格书选择.accuracy
2020-06-15 14:10:29
3764
1
原创 NRF52832----按键使用
1、SDK下”buttons_init”稍微修改了一下便于理解static void buttons_init(void){ ret_code_t err_code; //这里声明一个按键配置列表,配置了按键对应的引脚号,上下拉,回调函数入口 static app_button_cfg_t buttons[] = { {LEDBUTTON_BUTTON, false, BUTTON_PULL, button_event_handler}
2020-06-11 11:41:11
2906
1
原创 NRF52832----记录
使用清风教程学习,开发板为某宝上的几十块买的板子。1、例程编译出错 第八章:蓝牙程序信息LOG显示,按照教程打开“ble_app_blinky”例程,发现编译错误。这个问题出在”system_nrf52.c”文件 将“nRF5_SDK_15.0.0_a53641a\modules\nrfx\mdk”下的同名文件复制到“DnRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_blinky\pca10040\s132\a...
2020-06-10 14:38:53
320
1
原创 新唐51单片机----挖坑
1、定时器3中断与串口0中断冲突 开启了串口0中断,同时开启了定时器3中断,串口0中断处理函数如下:void SerialPort0_ISR(void) interrupt 4 { if (RI==1) //这个中断时接收跟发送共用的 { UART_RxData(&UART...
2019-12-09 16:34:07
1481
原创 PyQt5----学习记录
参考书为:PyQt5快速开发与实战一、环境搭建 基本上参考书本不会有大问题,需要注意的是: (1)尽量使用PIP安装,方便简洁。 (2)Python安装路径,将会是你使用PIP安装PyQt时的路径。所以如果不想将这些东西 安装到C盘下,那么你应该讲Python安装在你想要的路径。 (3)安装完书本的一堆东西...
2019-11-12 17:41:50
242
原创 Python----学习记录
参考书为:《PyQt5快速开发与实战》1、Python数据类型int(有符号整型) long(长整型[也可以代表八进制和十六进制]) float(浮点型) complex(复数)(1)Python允许你同时为多个变量赋值。例如: a = b = c = 1 a, b, c = 1, 2, "john" //c为字符串对象2、字符串 (...
2019-11-11 17:10:35
195
原创 hc-05蓝牙模块使用问题
(1)搜索周围蓝牙设备 下载官方的资料,根据AT指令进行操作,会发现。AT+INQ完全没有返回?或者返回OK字样? 解决方法: 1、没有返回 这种情况下可以尝试输入如下指令: AT+O...
2019-05-21 17:58:18
1507
原创 STemwin----开发问题锦集
(1)GUI键值问题 移植方式:stm32cubemx创建F103带freertos工程,手动移植C盘cubemx自带的stemwin固件 发现发送键值消息时出现如下问题: void Emwin_TEST(void){ WM_HWIN hWin; hWin = CreateFramewin(); GUI...
2019-03-25 15:32:31
819
原创 ESP32----开发问题合集
1、GPIO按键检测当GPIO作为输入,检测按键的高低电平时候,通常内部要设置为上拉或下拉模式。如果浮空,外部则需要设置上下拉。在使用ESP32的引脚作按键检测时,发现有几个引脚使无法设置上下拉模式的,查看官方API参考网页可知34~39引脚不能被以下API设置:数据手册也隐晦提到这一点:...
2019-03-01 15:22:59
610
原创 ESP32----NVS使用
NVS是什么参考这个:https://blog.csdn.net/xuanze0/article/details/79486512 总的来说,就是非易失性存储,类似MCU EEPROM,但实际上调用ESP32这些函数,数据是存储在FLASH中的。它的管理方式类似数据库的表,在NVS里面可以存储很多个不同的表,每个表下面有不同的键值,每个键值可以存储8位,16位,32位...
2019-02-28 18:35:18
7540
原创 ESP32----ubuntu下问题合集
1、vscode设置头文件路径问题点击小灯泡,选择修改路径,然后输入自己路径即可:但是会有一个问题,就是:#include "gpio.h"你发现打开这个“gpio.h”,vscode会引导打开“/usr/include/linux/gpio.h”这个问题,并不是你设置的头文件路径下的文件。目前未找到方法,因为引用绝对路径也不行。解决方法是:在VSCODE下先打开你...
2019-02-28 15:36:10
442
转载 ESP32----Linux下环境搭建
转载自:https://www.cnblogs.com/Engineer-Lai/p/8005455.html 在按照以下博客搭建环境是成功了的,不过中途也遇到了一些问题。 1、vim的操作 退出vi :q! 不保存文件,强制退出vi命令 :w 保存文件,不退出vi命令 :wq 保存文件,退出vi命令这里要注意,按下ESC退出编辑,比如说保...
2019-02-27 11:39:02
3533
原创 STM32----GT9157触摸IC驱动
一、硬件环境 野火F429第一代开发板,5寸触摸屏,触摸IC为GT9157,支持5点触控(但IC是支持10点触控的)二、GT9157初始化总的流程:1、初始化GPIO --> 2、初始化I2C --> 3、复位GT9157以确定IC从地址--> 4、写配置寄存器(0x8047~0x8100)(1)初始化GPIO与I2C ...
2018-12-01 18:12:30
4957
原创 STM32----LTDC与DMA2D
一、硬件环境 第一代野火F29开发板,MCU为stm32f429IGT6。板载IS42S16400J SDRAM,16bit位宽8M容量。 TFT为RG888接口,分辨率为800*480。二、LTCD初始化(1)初始化GPIO与SDRAM(2)初始化相关时钟 //2、LTDC相关时钟初始化 /* 配置 PLLSAI 分频器,它...
2018-11-30 14:27:50
2550
原创 STM32----SDRAM配置
一、硬件环境 野火stm32F429第一代开发板,主频180。SDRAM为:IS42S16400J,容量8M/byte。接线如下:如何接线,需要参考两个文件。一个是stm32参考手册,一个是SDRAM数据手册。stm32参考手册中关于FMC引脚说明如下:SDRAM数据手册,太容易找就不贴出来了。需要注意的是,FMC映射到SDRAM有两个bank可以选择。...
2018-11-26 20:09:59
5155
2
原创 FreeRTOS---内存管理笔记
参考:https://blog.csdn.net/zhzht19861011/article/details/51606068FreeRTOS分为5种内存管理方式,在这里记录对于内存管理方式的理解。 一、heap_11、heap_1,只允许管理一个静态的数组ucHeap,内存从静态Ram中由系统分配,不能指定管理外部SRAM,或者管理堆中的内存2、直接按照申请的内存的大小,从空...
2018-08-03 18:42:24
1306
1
原创 STM32HAL----红外遥控(NEC)
整理了一个NEC协议的红外程序,NEC协议,物理环境为F103原子战舰V3,使用STM32CubeMX生成初始程序。定时器配置72分频,9999装载值(10MS)NEC协议:数据格式:同步码头 +地址码 +地址反码 + 按键码 +按键反码 (LSB先行)同步码头:9ms低电平 + 4.5ms高电平连发码 : 9ms低电平 + 2.5ms高电平逻辑1: ...
2018-07-31 14:47:03
7599
12
原创 STM32HAL----USB升级固件(DFU)
早就听说stm32可以利用USB升级固件,脱离各种Link。趁有空搜了下相关资料,然后利用stm32CubeMX实现了这个功能。参考了这个地址的资料:http://www.stm32cube.com/question/500 上面这个链接写得很详细,所以不再赘述,直接上重点以及注意点。 一、bootloader地址设置在CubeMX里面,有两个参数...
2018-07-25 17:04:32
18298
2
原创 NRF24L01模块----6通道通讯测试
一、MCU与NRF24L01通讯 采用SPI通讯协议,速率最大为10M,与普通SPI元器件稍有不同的是,多了一个CE引脚,用来开启接收、发送,以及使器件进入待机模式。具体看IC DATASHEET说明。 写寄存器指令格式为:1、SPI写寄存器地址 + 0x20 2、SPI写参数...
2018-07-24 11:18:09
4746
1
原创 CC2530开发板实验笔记----01
/***************************************************** 安德联CC2530与网关开发板历程zigbee实验1-13** 功能:1、S1按键切换正常模式与睡眠模式 * 2、S2打印当前芯片温度* 3、串口助手发送"LED_ON@"可开启LED1* "LED_OFF@"关闭LED1* ...
2018-07-13 08:21:46
1867
原创 C语言----基于旋转编码器按键的菜单结构
参考:https://blog.csdn.net/yangluoning/article/details/9313677 在不使用STemwin的情况下,做显示界面,菜单结构将会是很重要的东西。因为如果显示逻辑复杂,当遇上需要修改的界面的时候,复杂、混乱的显示逻辑(没错,就是那种很多switch if语句的结构),将会使人抓狂。在参考了“傻孩子菜单框架”之后自己整理了一个菜...
2018-06-06 15:59:45
6301
1
原创 STM32CubeMX----杂记
(1)在使用FSMC作为LCD接口时,同时ENABLE了FreeRTOS,发现生成的工程文件,编译之后会出问题。 研究后发现问题出在“FreeRTOSConfig.h”这段代码:/* Cortex-M specific definitions. */#ifdef __NVIC_PRIO_BITS /* __BVIC_PRIO_BITS w...
2018-05-28 20:57:08
2225
原创 STM32HAL----USB串行FLASH模拟U盘
这个功能浪费了我2天时间。其实本身是很容易实现的,但中途遇到了一个以往较少注意到的问题:堆栈空间。参考这个:https://www.cnblogs.com/qsyll0916/p/8013136.html 总的来说,就是因为堆空间分配不足,导致没有足够的空间给USB作缓冲。这个问题应该有人遇到过,但是网上相关的资料比较少。原子的HAL程序是将FLASH当成512字节扇区进...
2018-05-17 11:54:39
11216
8
原创 STM32HAL----USB模拟串口(VCP)
想要实现的功能是,USB模拟串口收发数据。串口助手发送数据至MCU,MCU接收后返回给串口助手。 当初是想用标准库做这个功能的。但是因为后来了解到STM32CubeMX这个软件,在尝试之后实在是感觉,太方便了。所以,并没有使用标准库,而是直接用STM32CubeMX生成HAL库的代码用了。(1)先点New Project,然后输入自己的MCU型号(2)配置引脚...
2018-05-10 10:30:48
23225
7
原创 STM32----FLASH掉电保存动态平衡方案
stm32是支持对自身Flash(code区)进行读写的。所以,在某些需要掉电保存的场合,我们可以利用这一特性节省一个外部的Flash或者EEPROM,对数据进行保存。 但是,如果需要经常性的保存数据,就会对固定地址的Flash进行频繁的擦写,大大损耗Flash的寿命。在这种时候,就需要用到动态平衡的方法进行处理了。原理:一、Flash擦写寿命 根据网上查阅的资料,...
2018-04-11 16:40:13
8985
原创 STM32----ADC进行信号(跳变沿、PWM)的捕获
一般情况下进行信号的捕获,如上升沿或者下降沿。均可采用外部触发进行捕获。这是基于信号比较稳定的情况,如信号出现较大的纹波或者易受到干扰。会出现“误触”的现象,此时用外部中断难以捕获到正确的信号。 这种情况的解决办法,可以采用以下办法:(1)使用定时器进行捕获,并开启定时器的滤波功能。在库函数结构体中,为: TIM_ICInitStruct.TIM_...
2018-04-08 14:28:11
11868
3
转载 嵌入式Linux常用命令
转载自:http://tech.hqew.com/fangan_741972【写在读之前】1、 黑色加粗的为命令,不可拼读错误;2、 -->是解释箭头;3、 所有括号内的内容为补充说明或单词补全,可不输入;4、 所有标记红色“例”为有图示的例子;5、 颜色一样、连在一起的且中间有空格的几个单词,是一个命令或一个完整说明;6、 其它颜色为可以区分设置,没有特殊含义;7、 实际命令...
2018-04-08 14:27:26
4258
原创 C语言----杂记
1、常量溢出u16 adc_temp = 0; //应为: u32 adc_temp = 0;for(i=0;i<100;i++){ adc_temp += usADC_CS1[i]; //usADC_CS1[i]数组里面每个元素大于1000,导致adc_temp溢出}adc_temp /= 100;1.2、数据范围溢出将一个数拆分为N个随机数 ...
2018-03-03 14:48:38
319
原创 STM32----杂记
1、开启引脚复用,引脚外部中断时,需要开启 RCC_APB2Periph_AFIO。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //只在此处开启时钟可顺利初始化外部中断 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12); //不配置无法启用外部中...
2018-03-02 17:45:07
1007
原创 C语言----指针形参(指向指针的指针形参)
一、通过指针形参在子函数改变常量大家都知道,C语言子函数的形参,是可以为普通数据类型,也可以为指针的。最初遇到这问题,是在学习STM32的库函数的使用。当初刚接触库函数,对于函数初始化接口,如:GPIO_Init(GPIOA, &GPIO_InitStructure); 为什么要取初始化结构体变量的地址传递进库函数(&GPIO_InitStructure),而不是直接将结构体变量本...
2018-02-08 15:51:10
21812
4
原创 STM32定时器----通用定时器输出带死区互补PWM
功能:利用一个普通定时器,输出2路互补的、频率可调、占空比可调、死区可调的PWM原理:如下图,计数模式为中心对齐模式可以看出,CH3高电平区间是以计数器计到4为中心,向两边延伸的。而CH4,因为输出极性相反,是以0为中心向两边延伸的。CCR3变小,占空比上升CCR4变大,占空比上升CCR3与CCR4的和为ARR注意,此模式计数器的计数周期=ARR,这与PWM模式
2018-01-23 14:32:42
12068
5
原创 STM32定时器----主从模式触发PWM移相
参考如下博客:http://blog.csdn.net/Wind4study/article/details/44860521但本文中使用的是:触发模式,而非:门模式代码如下:void TIM3_PWMShiftInit(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; GPIO_InitT
2018-01-23 10:15:56
12596
12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人