自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 C语言-字符串

1)strncpy●拷贝num个字符从源字符串到目标空间。●如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。(2)strncat●将源的第一个数字字符附加到目标,再加上一个终止的空字符。●如果source中C字符串的长度小于num,则只复制不超过终止空字符的内容。(3)strncmp●比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。

2023-07-21 20:28:06 194

原创 STM32-04-OELD

选上IIC就行。

2023-04-15 10:58:07 101

原创 STM32-03-系统滴答使用

我把系统滴答优先级别放到最高。

2023-04-14 11:37:26 79

原创 STM32-02-串口接收

跳过基础配置。

2023-04-14 11:27:50 90

原创 STM32-01-串口重定向

选择外部时钟选择程序下载方式。

2023-04-14 10:56:40 106

原创 关于pycharm中第三方库下载问题

问题集合记得关梯子记得关梯子记得关梯子要是遇到pip命令报错,或者在pycharm中无法下载第三方库,首先检查一下梯子是否开了的。我的环境:pycharm+anaconda虚拟环境问题 1:问题:WARNING: You are using pip version 21.2.4; however, version 21.3.1 is available.You should consider upgrading via the 'D:\anaconda\envs\py36\python.e

2022-02-16 17:06:21 1681

原创 基于proteus的时钟

原理图代码程序main.c#include "common.h"task_t data tasks[]={ {display,1,0,TS_READY}, {timecount,1000,0,TS_READY}, {timeshow,50,0,TS_READY}, {keyalone,8,0,TS_READY},};code u8 tasks_size=sizeof(tasks)/sizeof(task_t); // 当前系统中的任务数量void init_task(){ //

2021-12-02 17:10:30 2573

原创 基于proteus的ds18b20+lcd

实验电路图实验代码main.c#include <reg52.h>#include <ds18b20.h>#include <LCD.h>uint count_temp=0;//温度刷新计数uint temp=0;uchar table[]={0,0};uchar table1[]={0,0};uchar temper[]="temperature:";void System_Init();void Time0Init();void Lcd_D

2021-11-23 19:57:39 1071

原创 RT-Thread 信号量

1 信号量结合之前我们学过的空闲中断加上DMAvoid usart1_recv_thread_entry(void *parameter){ rt_err_t uwRet = RT_EOK; while(1) { uwRet =rt_sem_take(usart1_recv_sem, RT_WAITING_FOREVER);//获取串口2接收帧完成信号量 if(RT_EOK == uwRet ) { HAL_GPIO_WritePin(LD2_GPIO_Por

2021-10-31 20:03:58 142

原创 C -笔记

杂乱的基础知识

2021-10-12 10:51:42 47

原创 山外串口调试助手

使用方法我主要使用的是调试助手的模拟示波器功能主要的函数> void vcan_sendware(uint8_t *wareaddr, uint32_t waresize) { > uint8_t cmdf[2] = {0x03, 0xfc};> uint8_t cmdr[2] = {0xfc, 0x03};> > usart1_putbuff(cmdf,sizeof(cmdf));> usart1_putbuff(w

2021-09-10 14:37:58 2217 2

原创 串口 DMA+空闲中断

文章主要参考了https://blog.csdn.net/qq_42810361/article/details/106570373Cubemx的配置跳过基本的配置1USART1 配置中断配置其他默认配置不改变代码块usart.c 这里要添加头文件#include<string.h>ts_usart_type usart_nb_type;void hal_uart_recv_init(void){ /* 1. 打开串口空闲中断 */ __HAL_UART_ENABL

2021-09-02 11:29:07 827

原创 HAL库创建系统滴答无效的情况

需要在 SysTick_Handler() 中的用户段手动增加 HAL_SYSTICK_IRQHandler() 。// .\Core\Src\stm32f4xx_it.cvoid SysTick_Handler(void){ /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); /* USER CODE BEGIN SysTick_IRQn 1 */ HAL_

2021-08-19 09:31:11 144

转载 堆与栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助。数据结构的栈和堆首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是

2021-08-12 18:14:15 110

原创 关于$Sub$ $和$Super$ $

这是一种特殊模式:用于有一个已经存在且不能被改变的函数的情况(比如不能更改的库函数);使用这两个模式可以帮原函数打补丁,如存在一个函数foo();SubSubSub foo:定义的新功能函数,在foo()函数之前/后使用foo :定义的新功能函数,在foo()函数之前/后使用foo:定义的新功能函数,在foo()函数之前/后使用Sub$ $foo 可以添加一些新的程序代码。SuperSuperSuper foo:就是原始的未修补的foo函数,使用这个foo :就是原始的未修补的foo函数,使用这个foo

2021-08-12 18:02:23 380

原创 RT-Thread 线程创建

文章主要是自我的学习笔记代码实现1 首先最重要的是去rtconfig.h中去掉#define RT_USING_HEAP的注释2 创建Task.c 和Task.h文件Task.c#include "config.h"#include "Task.h"/************************************************************************** 变量定义***************

2021-08-11 19:21:12 517

原创 使用Cubemx移植RT-Thread并添加finsh组件

文章主要是自己的学习笔记,使用RTT代替RT-ThreadCubemx的配置跳过时钟树配置等基础配置1 加入RTT的包串口配置去掉一些函数的勾选,因为RTT系统以及定义了类似功能的函数,不能重复打开工程代码修改1这个文件在编译的时候会被识别为.c文件,需要做一下这样的处理。2在main函数中注释掉 //SystemClock_Config();``` board.c里面以及完成了配置3因为要使用finsh组件rtconfig.h中把#include "finsh

2021-08-11 17:53:30 532 2

原创 初入RT-Thread遇到的问题

第一个问题使用RT-THREAD Studio创建工程完成后想要下载到开发板出现了这样的问题,找了半天没有找到原因,搜索了半天也没有找到合适的方案,最后我把复位模式System Reset 改为了系统复位,然后就成功下载了。第二个问题我在MDK中移植了finsh组件,发现能够使用rt_kprintf()函数,但是并没有出现msh,问题出现的原因主要是从裸机过来还是没有深入理解,在main线程中必须有rt_thread_mdelay()才行,因为finsh本身也是一个线程,没有delay就无法去执

2021-08-11 14:46:31 599

原创 霍尔编码器测速

内容主要是我自己的学习笔记,有些内容考虑了我个人的情况。编码器介绍这里介绍的是霍尔编码器,这个编码器一共由两个霍尔开关传感器+铁氧体磁环。霍尔开关传感器是霍尔效应制作的一个磁场检测开关。Cubemx配置忽略掉常规的配置,一共主要一共使用了3个定时器,一个串口,时钟频率设置为168M定时器1 PWM输出 通道1及其互补通道1最好把速度设置为高2 定时器3 编码输出选择编码器模式,勾选中断,其他不用管3定时器7 作为计时在我的配置中,每隔一秒进入一次中断配置中断代码

2021-08-05 22:29:35 9956 1

原创 那些踩过的declared implicitly的坑

缺少头文件我的本意是想做串口打印进行调试,于是我在usart.c中重写了这两个函数,这里顺便记录下如何串口打印usart.c中int fputc(int ch, FILE *f){ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch;}int fgetc(FILE * f){ uint8_t ch = 0; HAL_UART_Receive(&huart1,&ch, 1

2021-08-05 17:34:33 8691 1

原创 PWM 驱动电机

文章主要是个人的笔记,所以很多地方可能是根据自己的情况来写的驱动器介绍CubeMX的配置基本的配置略过(时钟源等)我们使用定时器11选择内部时钟 通道1 PWM互补通道2

2021-08-04 20:14:13 2717

原创 PWM 通用PWM呼吸灯实现

PWM 通用PWM呼吸灯实现Cubemx 软件的配置1使用定时器2,通用定时器,配置如上2勾选使能3中断优先级配置时钟树配置代码部分tim.c 中uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,107,143,191,255, 255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};uint8_t

2021-07-29 21:37:30 147

原创 数据手册与参考手册

有关性能参数和使用方式的技术资料主要有两类,一类称为数据手册,另一类称为技术参考手册或简称参考手册。 数据手册是有关产品技术特征的基本描述,包含产品的基本配置(如内置Flash和RAM的容量、外设的数量等),管脚的数量和分配,电气特性,封装信息,和定购代码等。 技术参考手册是有关如何使用该产品的具体信息,包含各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用和寄存器配置等详细信息。 通常在芯片选型的初期,首先要看数据手册以评估该产品是否能够满足设计上的功能需求; 在基本选定所需产

2021-07-22 09:51:06 1597

原创 基本定时器

基本定时器CubeMX软件配置对定时器进行基本的配置,注意这里我们的时钟配置的72M,预分频的值会自动+1,我们这里的配置1ms勾选中断使能配置中断优先

2021-07-20 21:20:13 80

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除