- 博客(32)
- 资源 (2)
- 收藏
- 关注
原创 用vscode调试cpp程序相关操作记录
因为不用调试模式直接运行时,工程是通过执行bash脚本来编译链接并运行可执行程序,比如最后一行执行语句中传参的相对路径是相对本bash脚本路径,也就是${workspaceFolder}/Cmodel/run, 脚本参数中的…/Image/input/picture1.f 即${workspaceFolder}/Image/input/picture1.f,也就是文本实际所在位置。10. “miDebuggerPath”: “/usr/bin/gdb”, //设置调试器路径。
2024-03-22 16:21:37 975
原创 计算机组成原理-算术逻辑单元
表示和存储数据时计算机的重要功能,但真正的目的是计算,比如对两个数据进行加/减/乘/除,这些操作通过计算机的算数逻辑单元(ALU)实现,负责所有运算.ALU即算术逻辑单元,用来执行算数和逻辑运算,内部最小单元其实是晶体管,通过一层层封装连接组成。
2023-08-24 21:00:14 1214
原创 机器学习-fp16表示
公式引入存储方式:1位符号位+5位指数位+10位尾数位,共16位,内存占2个字节sign:符号位exponent:指数位(阶码)fraction:小数位(尾数)阶码常用补码或移码表示尾数常用原码或补码表示fp16表示为:(1.0+fraction)中的1规格化值:小数点前只有1位数,且非0例:3.1415 * 10^2, 0.31415 * 10 ^ 3, 31.415 * 10^(-1)都表示314.15,其中3.1415 * 10^2被称为规格化值,后两者为非规格化值。对
2022-04-30 21:50:17 11867 1
原创 C语言-堆排序
堆、大根堆、小根堆n个元素的序列{k0,k1,…,k(n-1)}且当满足以下条件时:则称为堆,前者称为大根堆、后者称为小根堆。若将和此序列按顺序(相对链式)方式存储(如:一维数组),则可看成是一个完全二叉树(概念可以回顾:)。而堆实质是满足以下性质的二叉树:书中所有非叶子结点的值均大于等于(或小于等于)其左、右孩子结点的值。如序列(96,83,27,38,11,09)和{12,36,24,85,47,30,53,91},分别满足条件(1)和条件(2),它们均为堆。对应完全二叉树图为堆排序原理
2022-02-11 16:53:46 1497
原创 C语言-二叉树
二叉树在书中最为常用,一下记录二叉树的存储结构及操作和应用。二叉树特点仅有一个根结点(非空)每个结点最多两个子结点,左节点和右节点,左右次序不能颠倒满二叉树定义深度为k,含有个结点(除最后一层外每个结点外每个节结点都有左右子结点), 每一层的结点数都为完全二叉树定义对当前二叉树的根结点开始,从上到下,从左到右进行编号,如果编号都和满二叉树一一对应,则为完全二叉树,如下图二叉树存储结构1.顺序存储结构对于满二叉树和完全二叉树,从根结点开始,从上到下从左到右存储结点元
2022-02-07 16:49:47 1611
原创 C语言-顺序栈实现
栈的定义栈:时限定只在表尾进行插入或删除的线性表。所以栈也成为后进先出的线性表表头为栈底,表尾为栈顶,不含元素的空表为空栈顺序栈的实现顺序栈是指利用顺序存储结构实现的栈,即 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时利用数组下标top指示栈顶元素在顺序栈中的位置。因为C语言中数组下标从0开始,这里以top = -1表示空栈。顺序栈的数据结构:#define maxStackNum 100typedef struct{ int* data; //栈元素指针 int to
2021-11-14 22:43:00 1221
原创 C语言-用队列实现栈
栈:是先进后出的数据结构队列:是先进先出的数据结构用一个队列实现栈主要目的是:保证队首的元素和栈顶相同当队列为空时,直接入队;当队列不为空时,将该元素入队之后,将该元素之前的所有元素依次出队再入队。这样栈顶元素对应队首,栈底元素对应队尾,弹出时,按顺序弹出。...
2021-11-14 22:05:50 1232
原创 C语言-用栈实现队列
用栈实现队列栈是先进后出的数据结构,队列是先进先出的数据结构,所以当往队列中插入数据时,可以直接入栈。只是队列中先插入的在队首,队列中先插入的在栈底。弹出队首的数据,实际就是删掉栈底的数据,直接删除不了,可以利用另一个辅助栈,将当前栈中数据全部依次弹出,并push到辅助栈中,这时当前栈的栈底元素就变成了辅助栈的栈顶元素,直接pop掉辅助栈的栈顶元素就行。队列从队首到队尾的元素始终是辅助栈栈顶到栈尾+当前栈栈底到栈尾。辅助栈栈顶对应着队列队首,这就说明当辅助栈不为空时,队列的pop,可以直接对辅助栈p
2021-11-13 19:29:39 2386
原创 C语言-排序
void quickSort(int* candyType, int begin, int end){int tmp = candyType[begin];int left = begin;int right = end;if (right <= left) return;while(left < right){ while((left < right) && (candyType[right] >= tmp)) right--
2021-09-09 11:08:39 448
原创 matlab函数之randn()
randn - 正态分布的随机数功能:X = randn 返回一个从标准正态分布中得到的随机标量。示例X = randn(n) 返回由正态分布的随机数组成的 n×n 矩阵。示例X = randn(sz1,…,szN) 返回由随机数组成的 sz1×…×szN 数组,其中 sz1,…,szN 指示每个维度的大小。例如:randn(3,4) 返回一个 3×4 的矩阵。示例X = randn(sz) 返回由随机数组成的数组,其中大小矢量 sz 定义 size(X)。例如:randn([3 4]) 返
2021-06-05 22:09:31 51080 2
原创 matlab图像处理之--旋转
matlab函数实现图像旋转【还没弄清楚rotate()接口的使用,先用以下方式代替实现】沿C方向顺时针旋转90°,实际等价于是将原图w,h方向进行转置,再进行左右镜像inFtm = [iw ih ic]转置tmpFtm = premute(inFtm , [2 1 3])左右镜像outFtm = flip(tmpFtm, 2)沿C方向顺时针旋转180°,实际等价于左右镜像再上下镜像,或者是先上下镜像再左右镜像inFtm = [iw ih ic]左右镜像tmpFtm = fl
2021-04-25 17:46:57 8108
原创 matlab函数之reshape()
reshape - 重构数组结构:作用:注意点:实例功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入结构:B = reshape(A, sz)B = reshape(A, sz1, sz2, ···, szN)作用:
2021-04-09 09:39:22 61372 2
原创 单精度、半精度之间的转换,及半精度加法实现
单精度浮点存储方式1位符号位s+8位指数位e+23位尾数位f,共32位,内存占4个字节,表示方式为(-1)^s * 2 ^(e - 127) * 1.f,半精度浮点存储方式1位符号位+8位指数位+23位尾数位,共16位,内存占2个字节单精度表示范围更大,精度更高,能精确到小数点后6位,半精度能精确到小数点后两位,半精度是牺牲精度提高计算速度,一般用于人工智能等对运算速度比较高的场景。单精度转换为半精度将浮点数转换为4字节16进制,依次获取f32符号位,f32指数位,f32尾数位符号位符
2020-12-15 17:22:33 6912 3
原创 STM32F030CCT6实时时钟(RTC)配置总结
7位异步分频值为255,15位同步分频值设为128,则可获得1Hz的频率输出f = 32.768/(255+1)/(127+1)=1HzRCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //开启电源管理时钟,RTC属于后备区域PWR_BackupAccessCmd(ENABLE); //使能后备寄存器,以被允许访问RTC相关寄存器if(RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x5a5a){ RCC...
2020-11-20 17:25:47 4350
原创 STM32F030CCT6串口3使用总结
【前提】实际应用中,芯片型号为STM32F030CCT6,串口1用于模组通讯,串口2用于仪表通讯,串口3用于调试,log输出串口1配置void USART1_Config(u32 baud){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph
2020-11-17 10:33:11 4139 11
原创 STM32 IAP升级--内部FLASH和外部FLASH两种方式实现
芯片型号STM32F103RET6,flash大小512K,起始地址0x08000000一般说STM32内部FLASH就是指主存储器区域【注】此实验中启动方式设置为复位后从主闪存存储器启动(BOOT0拉低)IAP实现流程为,上电复位后,先执行bootloader(启动程序),在bootloader中判断是否含有要更新升级的文件,若有,则将待升级的文件加载到APP,加载完成后跳转执行;若没有则直接跳转至现有APP程序中执行基于外部flash的IAP升级外部flash芯片型号为W25Q32,大小为3
2020-10-27 16:11:02 10445 14
原创 STM32内置闪存读写
一般说STM32内部FLASH就是指主存储器区域写内部FLASH操作过程解锁在对FLASH写数据之前,需要先给解锁,因为芯片为了防止误操作修改应用程序,复位之后会给控制寄存器FLASH_CR上锁(1) 往 FPEC(闪存编程/擦除控制器) 键寄存器 FLASH_KEYR 中写入 KEY1 = 0x45670123(2) 再往 FPEC 键寄存器 FLASH_KEYR 中写入 KEY2 = 0xCDEF89AB注:错误的键值都会在下次复位前锁死FPEC模块和FLASH_CR寄存器页擦除在写入
2020-08-04 17:28:26 1943
原创 NB-IOT 设备在IOT平台注册过程学习记录
在IOT平台注册设备设备,携带PSK和IMEI,在平台设备注册后,设备就会添加到设备列表中,设备状态为离线状态设备上电入网成功后(设备入网过程参考:BC95手动入网和自动入网),设置CDP服务器AT+NCDP=xxx.xxx.xxx.xxx,5683 (IP为IOT平台接入地址)注:平台注册设备时选择不加密方式,在配置CDP服务器地址时,端口为5683,不需要DTLS握手;选择加密方式时...
2020-03-06 19:03:55 3966
原创 NB-IOT 移远BC35设置频点学习记录
移远BC95设置频点AT+CSQ查询到信号值只是一个广义的参考,要查询真实的信号质量可以通过查询模块状态信息(类似于手机桌面信号强弱标志只是一个大致参考,实际信号强度可以查看SIM卡参数信息)信号强度查询AT+NUESTATUS如果需要网优工程师来查询基站的话,只要提供小区物理ID(即PCI)频点和频段的转换关系如下:(图片来自百度文库)频点2508刚好落在5频段2400-26...
2020-03-03 14:39:35 3301
原创 NB-IOT 移远BC35手动入网和自动入网
BC95手动入网和自动入网自动入网(模块默认自动入网模式)模块复位AT+NRB配置模块上电或者复位后自动接入网络AT+NCONFIG=AUTOCONNECT,TRUEOK配置完成后,重启模块使指令生效(一般配置完成之后,都需要重启使其写入模块)AT+NRBOK查询AT+NCONFIG?查询网络注册状态AT+CEREG?+CEREG:0,1 //已注册上网络OK查...
2020-03-03 14:16:38 4354
原创 STM32进入Standby模式并唤醒
项目背景设备具备电池、电源适配器两种供电方式,实现出厂时最低功耗(即进入待机模式),到用户开始使用时需要手动唤醒,开始复位运行。在检测到设备是交流供电时,设备全速运行;电测到是电池供电时,定时采集数据,采集完毕进入停止模式,定时器唤醒等待下次数据采集。(stm32f103ret6)备注:本节只记录待机模式的进入和唤醒,停止模式的实现方式见[STM32进入STOP模式并唤醒实验总结](https...
2020-02-25 17:01:05 21176 5
原创 '.'和'->'使用过程中的注意事项
这里写自定义目录标题'.'和'->'使用过程中的注意事项'.‘和’->'使用过程中的注意事项List_t* pxList;ListItem_t * pxIterator;pxIterator->pxNext->pxPrevious = pxNewListItem; //没错pxIterator = pxList->xListEnd->pxPrevi...
2019-11-09 09:47:12 277
原创 移远M26实现短信接收
具体例子,参照上传的官方《Quectel_GSM_短消息应用指导_V1.1》https://download.csdn.net/download/lmx11040101/11022152步骤一. 设置短消息模式 短消息收发主要分文本和PDU模式,因为PDU涉及到编解码,另外项目中传送的都是英文字符,所以选用文本模式,实现比较简单 AT+CMGF=1\r\n步骤二. 选...
2019-03-15 16:12:19 2323
原创 STM32进入STOP模式并唤醒实验总结
项目需求,需要实现设备低功耗功能,实现过程中遇到几个问题,以此记录总结。(stm32f103ret6)问题一:执行PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);后,程序继续执行,看到的现象像是没有进入休眠。调试步骤:1.关闭自己的时钟配置,调用启动函数中默认的SystemInit()2.关闭相关外设初始...
2019-01-11 12:09:30 60451 30
原创 stm32串口奇偶校验时出现bug总结
做的是工业传感采集器,现场采集的参数查询指令为FE FE 68 19 01 00 00 00 00 33 78 01 03 1F 90 01 E1 16 ,8位数据位,奇校验模式串口设置: USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructur...
2018-09-13 11:15:31 9994 7
转载 sscanf()高级用法
sscanf(recvbuf,"%*[^/]/%[^ ]s",buf_rev);sscanf(buf, "GET /%[^ ]", buf_rev);这个是在一个webserver.c里面的例子,通过sscanf()语句可以找到和它前面相匹配的语句然后打印出后面需要的东西,下面说下%[]:其基本格式为 %[set],表示将接收一个由set指定格式的字符串,其中set表示可接受的...
2018-03-21 12:09:13 739
原创 strstr(str1,str2)的地址空间问题
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULLchar*m_Read_Buffer = "start = //http:www.baidu.com23333";char* p = NULL;char* q = NULL;p = strstr(m_Read_Buffer,...
2018-03-19 19:06:43 705
原创 移远M26 GSM实时获取网络时间
移远M26 GSM实时获取网络时间1.启用同步网络时间, 开启同步网络时间功能 AT+QNITZ=1,响应OK2.获取最近一次的网络同步时间 AT+QLTS,响应+QLTS: <time>,<ds>例:+QLTS: "18/03/14,08:08:35+32,0"time格式:yy/MM/dd,hh:mm:ss±zz,各指年,月,日,小时,分钟,...
2018-03-14 17:17:49 10504 3
原创 strstr造成的非对齐访问错误
extern char *strstr(char *str1, const char *str2);大家都知道函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。具体用法这里就不多说,网上资源很多。char *buf_check = NULL;buf_check = strstr((const char*)gprs...
2018-02-02 19:25:02 1178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人