- 博客(252)
- 资源 (21)
- 收藏
- 关注

转载 Keil及SourceInsight护眼字体及背景色
Keil:https://blog.csdn.net/w5862338/article/details/50984536 SourceInsight:https://blog.csdn.net/dosthing/article/details/80013059 说明:背景色推荐使用上面Keil中配置的。 ...
2019-01-24 09:05:34
1566
原创 RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程
4、删除原有MX_USART2_UART_Init相关,尤其是main.c中对串口2的初始化,还有删除main线程中的HAL_Init();//因board.c中rt_hw_board_init()已经初始化过了。2、打开rtconfig.h //#include "finsh_config.h" 要使用shell,必须打开。HAL_UART_MspInit进行更改,变成串口1相关;3、若开启shell,希望将默认串口2变更为其它串口,如串口1,则将usart.c中的。来创建时钟树,再复制代码过来。
2023-05-16 16:32:26
1053
转载 C程序中的封装(转载)
写C代码的时候,最头疼的事情是哪些信息要暴露给外界,哪些隐藏在模块自身。如果不能处理好封装,那么久而久之,代码就自然演进成互相缠绕的意大利面条,不利于后期维护升级。
2022-06-25 20:34:49
1296
原创 C语言中位段实际运用
#include <QCoreApplication>//#pragma anno_unions //如果出现报错,共用体可能不支持匿名结构嵌套typedef union{ unsigned char BYTE; struct { unsigned char B0: 1; unsigned char B1: 1; unsigned char B2: 1; unsigned char B3: 1; .
2021-07-16 17:46:42
423
转载 2021-07-06
Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别https://www.sohu.com/a/384927867_505803
2021-07-06 13:53:38
160
原创 C语言复杂类型声明如何解读
复杂类型的说明:从变量名处起,根据运算符优先级结合,一步一步分析。下面以一个比较复杂的类型(int * (*p(int))[ ])为例:第一步,p先与()结合,说明是一个函数,第二步,()内有一个int,说明函数有一个形参为int型,第三步与*结合,说明返回的是一个指针变量,第四步与[ ]结合,说明该指针变量指向数组,第五步再与*结合,说明数组中的元素为指针型,第六步说明数组中的指针元素的类型为int型,结论,所以这是:返回一个由整型指针变量组成的数组的指针变量的函数,函数入参
2021-02-24 16:57:17
612
原创 有符号与无符号比较原理分析
今天空了又重温了一下C,针对之前强哥提的问题,我仔细想了下,举个例子:假如当前buff[1]=0111 1111B; buff[2]=1000 0000B;buff定义为char类型,一般系统隐含为signed char,执行buff[1] == ~buff[2]运算时,buff[1]由signed char自动转化为int,又因buff[1]符号位为0,则高位补0,结果为00000000 00000000 00000000 01111111B;buff[2]由signe...
2021-02-07 17:06:18
536
原创 关于STM32空闲中断极限时间
今天空了专门做了关于STM32空闲中断极限时间的实验,结果如下:115200, 1个字节理论用时:1/115200=8.68us,实测发送一帧数据的字节间延时超过大约173us时,则出现空闲中断,173/8.68=20字节;38400, 1个字节理论用时:1/38400=26us,实测发送一帧数据的字节间延时超过大约517us时,则出现空闲中断,517/26=20字节;9600, 1个字节理论用时:1/9600=104us,实测发送一帧数据的字节间延时超过大约2075us时,则出现空闲中断,20
2021-01-15 17:05:01
10185
9
原创 STM32F1基本定时器单次触发模式
之前在网上求助,没见到多少关于STM32定时器单次触发的代码,今天自测了下可行。只需要将TIMx_CR1的OPM置1即可。
2021-01-07 10:36:42
3000
原创 HAL库回调函数自定义版本注意问题
HAL库回调函数自定义版本void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){}如果未使用入参huart,会被编译器优化,仍然使用其__weak版本。注意哦!!!!
2020-12-24 16:19:27
484
1
原创 SPI读写函数寄存器版本(STM32F1xx,STM32F7xx实测完美)
void SPI_ReadWriteByte(SPI_TypeDef *spi,unsigned char *pTxData, unsigned char *pRxData, unsigned short Size)//寄存器版本{ volatile unsigned char tmpreg; unsigned short TxXferCount,RxXferCount; unsigned char *pRxBuffPtr = pRxData; unsigned char .
2020-12-07 15:30:34
1693
原创 source insight3.5 相对路径(保证可行)
source insight 相对路径source insight项目移动到另外一个地方时,会因为之前是绝对路径而导致项目中的文件都不可用,需要重新把这些文件添加一遍。解决办法为创建项目时设定为相对路径。我的项目路径:方法为:1、创建source insight项目,在创建时设定为“项目文件有自己的配置文件”,点击 “确定”;2、不添加任何的项目文件,直接点“关闭”;3、在菜单“Project\Project settings”中修改“Project Source D
2020-10-23 16:06:19
1287
1
转载 教你怎样将RS422转成RS485接口
RS232接口是一种用于近距离(最大30-60米)、慢速度、点对点通讯的通讯协议,在RS232中一个信号只用到一条信号线,采取与地电压参考的方式,因而在长距离传输后,发送端和接收端地电压有出入,容易造成通讯出错或速度降低。RS485/422接口采用不同的方式:每个信号都采用双绞线(两根信号线)传送,两条线间的电压差用于表示数字信号。例如把双绞线中的一根标为 A(正),另一根标为B(负),当A为正电压(通常为+5V),B为负电压时(通常为0),表示信号“1”;反之,A为负电压,B为正电压时表示信号 “0”
2020-10-16 09:33:25
40268
原创 浮点数内存布局(精华版)
1.float和double的范围和精度(1)float和double的表示范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)+8bits(指数位)+23bits(尾数位)double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)(2)在数学中,特别是在计算机相关的数字(浮点数)问题的表述中,有一个基本表达法: (浮点)数值 = 尾数 × 底数 ^ 指数,(附加正负号)...
2020-10-15 17:04:53
1620
原创 STM32-硬件错误HardFault_Handler的处理方法(个人实战)
1、首先将startup_stm32f767xx.s(结合自己所使用的芯片MCU型号)栈和堆加大,测试是否还进入HardFault_Handler不;2、如果按照第1步处理后,仍然进入HardFault_Handler错误,则参照以下网址:https://blog.csdn.net/electrocrazy/article/details/78173558特别说明:stm32f7xx_it.c(结合自己所使用的芯片MCU型号)中的void HardFault_Handler(void).
2020-09-23 17:11:26
1255
原创 STM32串口空闲中断--我入的一个坑
串口使能后,如果关闭接收,再重新打开,空闲中断标志会被置位,再关闭接收,再重新打开,空闲中断标志又会被置位,如此反复。。。切记重新打开串口接收,马上清空闲中断标志(如果要使用空闲中断),否则会一直进入空闲中断!...
2020-09-15 09:07:59
6075
2
原创 stm32查看代码运行时间[stm32f7xx]
1、初始化1个定时器TIM5_Init(-1,108-1);//arr为最大值(unsigned int)-1,让其一直往上加,最大值42亿us,即最大可表示4200秒,分频系数psc为108,即每+1等于1usvoid TIM5_Init(u32 arr,u16 psc){ TIM5_Handler.Instance=TIM5; //通用定时器5 TIM5_Handler.Init.Presca...
2020-07-16 15:17:31
3584
原创 串口接收中断的巧妙运用(基于KEA128,用于接收不定长数据帧)
//uart.cunsigned int uart_rx_with_to(UART_Type *uart_prt, unsigned char *pbuffer){ unsigned int i = 0; unsigned int len = 0; while (1) { if (uart_prt->S1 & UART_S1_...
2020-01-14 16:14:50
1381
2
原创 nRF51822看门狗实战运用
#include <stdbool.h>#include <stdint.h>#include "nrf.h"#include "nrf_delay.h"#include "nrf_gpio.h"#define LED0 (18)#define LED1 (19)#define RELOAD_COUNT (32768*5 - 1) // 5 se...
2020-01-08 17:12:19
796
转载 NRF51822和NRF52832的主要区别
NRF51822和NRF52832的主要区别对于NRF51822和NRF52832的选择性相信大家也是非常困惑的,哪个性价比高?下面为大家讲下NRF51822和NRF52832的一个区别,让大家能够更好的快速选型加快研发产品进度!主要分为五大要点:一、功耗方面:nRF52832更是在nRF51822的基础上简直将功耗降低了一半二、更好的RF体现,主要是发射功率和接纳...
2019-12-25 16:52:11
1411
1
原创 STM32串口通信原理及HAL库代码stm32f1xx_hal_uart.c阅读分析
原理性说明://参考网址:https://blog.csdn.net/u010561799/article/details/89526266在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器,另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空(单字节),另一个是TC=发送结束(多字节)。当USART_DR中的1字节...
2019-11-29 11:00:10
3527
1
转载 STM32的USART发送数据时如何使用TXE和TC标志【标准库】
http://bbs.21ic.com/icview-2514168-1-1.html
2019-11-28 09:07:21
672
原创 求将一个数的二进制位逆序算法
//输入1个字节,将其二进制位颠倒后,再输出1个字节//比如input:0110 0101 output:1010 0110uint8_t bit8_order_reverse(uint8_t ch){ uint8_t ch_new = 0; uint8_t bit_val = 0x80; uint8_t bit_val_reverse = 0x01; ...
2019-07-03 14:09:49
1213
原创 Keil官网下载软件开发包并安装
Keil官网下载packet:Keil官网首页里搜索芯片型号,比如:NRF51822,然后显示搜索结果,再在结果中点击MDK5 - Nordic Semiconductor nRF51822_xxAA,然后再点击"Device Family Pack"下面的"Download",将会下载.zip记得解压到C:\Keil_v5\ARM\PACK,可能还要细分目录,如果下载的是.pack文件,...
2019-07-02 10:29:02
4788
转载 将STM32 iap hex文件与app hex文件合并为一个hex文件
日前公司产品需要增加远程升级功能,boot loader程序写好后交予生产部门使用时他们反馈每个产品程序需要刷写两次(一个boot loader 一个app程序),生产进度变慢浪费时间,于是乎研究如何将两个程序并为一个。参考:http://blog.csdn.net/yx_l128125/article/details/13591743 后成功实现了将两程序合并为一个。IAP +APP 结...
2019-05-24 11:50:51
772
原创 STM32F10X创建新工程系统时钟设置注意事项
(1)STM32创建新工程时,最最重要的第一步就是要确定芯片外部晶振是多少,然后设置stm32f10x.h文件中的HSE_VALUE为外部晶振值;(2)设置系统时钟分频系数,在system_stm32f10x.c文件中,SetSysClockTo72()函数中,修改 【RCC_CFGR2_PREDIV2_DIV2 和 RCC_CFGR2_PLL2MUL8】 : RCC->CFGR2...
2019-05-23 14:14:46
361
转载 keil软件仿真时遇到的问题汇总
一、软件仿真步骤设置:1.target-->XTAL晶振设置(STM32,8.0)2.Option->Debug->Use_Simulator3.Option->Debug Dialog DLL默认是DARMSTM.DLL Parameter默认是-pSTM32F103VC二.keil仿真时,会遇到程序停在 /*Wait t...
2019-05-04 19:29:46
8938
转载 NVIC_PriorityGroupConfig() 函数在每个工程中只需要配置一次
NVIC_PriorityGroupConfig() 函数在每个工程中只需要配置一次刚开始接触NVIC,看到每个例程在配置中断的时候,都用到NVIC_PriorityGroupConfig() 函数,来给优先级分组,会让人以为在配置每个中断时,都需要用这个函数,其实不用的。NVIC_PriorityGroupConfig() 函数在每个工程中只需要配置一次。如果整个工程均没有配...
2019-04-26 09:44:27
3965
转载 USART_GetITStatus和USART_GetFlagStatus的区别
USART_GetITStatus和USART_GetFlagStatus的区别USART_GetITStatus()和USART_GetFlagStatus()的区别 都是访问串口的SR状态寄存器,唯一不同是,USART_GetITStatus()会判断中断是否开启,如果没开启,也会返回false。 ITStatus USART_GetITStatus(USART_Ty...
2019-04-25 19:44:51
2757
转载 STM32中断一些概念(主要是外部中断与中断通道)
主要参考:startup_stm32f10x_hd.s,stm32f10x_exti.h,stm32f10x_exti.c,另外,这里说的外部中断是相对于M3内核之外的,主要是外设中断如:如I/O口相应的外接设备中断,USART、Timer等其它本身固件中断。 对于cortex_m3内核所支持的240个外部中断[__IO uint8_t IP[240];...
2019-04-25 17:32:49
7802
转载 ADC 与实际电压值的关系
ADC 与实际电压值的关系1.首先确定ADC用几位表示,最大数值是多少。比如一个8位的ADC,最大值是0xFF,就是255。2.然后确定最大值时对应的参考电压值。一般而言最大值对应3.3V。这个你需要看这个芯片ADC模块的说明。寄存器中有对于输入信号参考电压的设置。3.要计算电压,就把你的ADC数值除以刚才确定的最大数值再乘以参考电压值。 比如ADC值为0x80, 实际值就...
2019-04-19 13:50:13
7563
原创 51单片机定时器的查询和进入中断处理
51单片机定时器可用两种方式处理:查询和进入中断处理。1.查询方式void Init_T0 (void) 定时器初始化{ TMOD = 0x01;//计时器模式 TH0 = (65535-65000) /256;//初装值为65536-65000,逐步+1,最后加到65535,溢出TF0=1 TL0 = (65535-65000) %256; E...
2019-04-18 10:18:49
11566
3
转载 关于NRF51822定时器/计数器的3篇文章
http://www.bubuko.com/infodetail-2427035.htmlhttps://blog.csdn.net/changyourmind/article/details/54019306#commentBoxhttps://blog.csdn.net/rical730/article/details/51016963注意:1、定时器溢出就是...
2019-04-17 16:23:04
760
转载 STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结
https://www.cnblogs.com/pertor/p/9488813.html
2019-04-15 16:45:17
8740
原创 STM32片内FLASH操作
STM32学习笔记:读写内部Flash(介绍+附代码)https://www.cnblogs.com/pertor/p/9484663.html关于STM32像EPROM一样可以单字节写内部Flash的理解https://blog.csdn.net/xld_19920728/article/details/78928161STM32内部FLASH读写-通用https://blog.c...
2019-03-19 17:44:01
2357
原创 微处理器内存布局方面知识
51单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解https://wenku.baidu.com/view/6cac6dbbafaad1f34693daef5ef7ba0d4a736d85.htmlSTM32F1(Cortex M3内核)存储器映射https://blog.csdn.net/fantastikman/article/details/73481021关于单片...
2019-03-19 13:47:45
519
转载 keil MDK编译完成后,Program Size: Code,RO-data,RW-data,ZI-data的意义
keilMDK编译完成后,ProgramSize:Code,RO-data,RW-data,ZI-data的意义转载 2016-02-12 15:27:07Program Size: Code=344 RO-data=252 RW-data=100 ZI-data=1024 看了多遍,总是忘,这次还是把它分析透了吧,若有不对的地方还请各位看官指正补充固定不变的代码存在ROM...
2019-03-19 11:31:12
1044
STM32F103串口RS485_DMA收发寄存器版(实测完美)
2020-12-03
我的nRF51822学习.zip
2020-01-07
STM32 cubeMX CAN中断方式接收发送数据.rar
2019-12-23
UART_DMA_不定长数据接收发送(HAL).rar
2019-12-02
Qt5注册全局热键实现显示或隐藏对话框
2018-05-16
QT仪表盘实例(项目实战)
2018-05-15
Qt基于UDP的P2P聊天程序
2018-05-02
Qt主线程与次线程通信实例代码
2018-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人