- 博客(36)
- 收藏
- 关注
原创 STM32调试TIC12400笔记
工作中需要用到,但是有关这个芯片的参考资料好少,自己写一下调试过程,持续更新中,还没调完。用的是正点原子的mini板,芯片是stm32f103RCT,需要知道spi的相关知识,先配置spi,用cubemx,用硬件spi,下面会细说为什么用硬件,不用模拟。
2024-09-19 15:10:25 639
原创 STM32CubeMX IIC实现六轴姿态陀螺仪模块JY61P
看手册可以知道,f1系列的板子留给IIC的是 PB6 PB7,但是我手里的mini板这两个引脚是没有上拉电阻的,所以用PC11 PC12,正点的板子给这两个引脚加了上拉电阻,CubeMX里只需要给这两个引脚选择开漏输出即可。最近需要用到陀螺仪这个模块,选取的是JY61P这个模块,单片机是正点原子f103的mini板,查资料的过程中发现用串口的代码很多,用iic的几乎没有,而我又需要iic,所以写移植iic代码的笔记。就来到了对应的教程界面,下载链接下的对应例程代码,我用的是STM32F1的。
2024-07-11 16:14:15 1579
原创 STM32Cubemx配置定时器PWM
首先要知道定时器的原理,我用的是通用定时器,简单说一下,就是把握两个寄存器的值,自动重载寄存器ARR和比较寄存器CCR,ARR决定PWM方波的频率,CCR决定占空比,方波什么时候翻转。要是原理一点不懂,建议先看看课。
2024-06-03 14:52:28 432
原创 stm32cubemx控制zigbee
先配置时钟,选择外部时钟源配置时钟树,始终可以根据需要配置,频率不固定,我就按最大配置了SYS配置如果需要使用中断,则勾选中断,这里发送端不用中断,接收端用,接收端勾选,发送端不用选接下来就是给工程命名,IDE要选MDK记得勾选分文件编程最后选择generate code即可生成工程文件在MDK-ARM文件夹下找到工程文件打开,在上面写文件名那一步,有文件的路径,去里面找MDK-ARM文件夹双击MDK-ARM文件夹进入 ,找到工程文件打开就是生成好的代码。
2024-05-28 14:28:01 1376 5
原创 linux驱动开发(三)
在过去的arm-linux内核源码树中arch/arm/plat-xxx和arch/arm/mach-xxx 等目录下边充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节信息,而这些板级细节信息对于内核来说都是垃圾代码,比如板上的 platform_device、 resource、 i2c_board_info、 spi_board_info 以及各种硬件的 platform_data.
2023-09-21 14:54:11 250
原创 实验7 - IIC/I2C接口实验
1. I2C总线是PHLIPS公司在八十年代初推出的一种"同步串行半双工"总线,主要用于连接整体电路。SOC和各自传感器外设之间的通信,一般使用的都是IIC或者SPI两个设备之间的通信,一般使用UART,485,CAN,USB2. I2C总线为"两线制",只有两根双向信号线。一根是"数据线SDA",另一根是"时钟线SCL"。3. I2C硬件结构简单,接口连接方便,成本较低。因此在各个领域得到了广泛的应用。4. I2C总线的通信的速度一般为100k-400kbps之间。
2023-09-03 10:30:56 534
原创 Linux驱动开发(二)
ioctl完成,数据的读写通过read/write函数完成。例如在编写串口启动的时。linux内核开发者想要将设备的控制和数据读写分开操作,设备的控制通过。候,串口需要设置波特率,数据位,停止位,校验位等信息通过ioctl设置。先看myled.c里对驱动的详解,按照流程梳理思路,流程已经标好号了。完成,通过read/write函数完成数据的收发工作。h文件里的东西,随用随定义,根据流程定义使用的东西。
2023-08-03 22:04:28 252
原创 linux驱动开发(一)
因为内核模块都是运行在3-4G的内核空间中,假如demoA模块中有一个add,需要将add函数的符号表导出,在编译demoB模块的时候使用这个符号表,此时在运行demoB模块的时候就可以调用demoA模块中的add函数。
2023-08-03 16:26:20 751
原创 实验三 UART串口实验
串口接口实物图及串口引脚的功能说明:串口常用的硬件连接主要使用3根线:RXD, TXD, GNDRXD : 接收数据线TXD : 发送数据线GND : 共地。
2023-07-25 20:34:56 1527
原创 实验二 按键轮询检测实验
按下后,电压为0,低电平。分析电路可知,当按键没按下时,key1处电压为3.3V,gaodianping。禁用上下拉电阻(按键自带上拉电阻)在main里进行判断判断,哪个按键按下,哪个灯亮。key的初始化key_init(){将按键的状态返回出去。
2023-07-24 13:16:12 342
原创 ARM架构
灰色表示不存在1. 每个小方块是一个寄存器,32位处理器,每个寄存器都是32位的。2. 寄存器是没有地址的,通过寄存器的编号进行访问,R0-R15,cpsr,spsr寄存器为什么没有地址?编译生成32位的机器码32位机器码中需要存储add的信息,r0,r1,r2(如果用地址的话,地址就占32位,r0,r1,r2每个寄存器都有32个地址,32位的机器码存不下,溢出了,所以不用地址指向寄存器)的信息。add被编译生成4位机器码r0,r1,r2也会被编译生成4位机器码。
2023-07-23 23:10:19 4775
原创 网络编程(二)
服务器模型分为两种:循环服务器 并发服务器循环服务器:同一时刻只能处理一个客户端的请求并发服务器:同一时刻可以处理多个客户端的请求TCP的服务器默认的就是一个循环服务器,因为他有两个阻塞的函数accept和recv之间相互影响UDP服务器默认的就是一个并发服务器,因为只有一个阻塞的函数 recvfrom。
2023-07-23 23:09:31 129
原创 实验1 : GPIO接口实验
按照不同功能分成不同的文件led.c led.h gpio.c gpio.h main.c。在根据原理图找到LED1,LED2,LED3连接的GPIO引脚,后面配置的时候就配置相应的组。代码要有可读性,为了增加可读性,以及方便使用,采取封装库的方式,使调用者一看便知在干嘛。单片机的代码一般都分文件编程,上面的方式不常用,下面是自己封装固件库的方式。灯的网络标识,LED1。
2023-07-23 22:46:15 1495
原创 IO进程(二)
PID就是操作系统给进程分配的编号,他是进程的唯一的标识。linux系统中,PID的值是一个大于0的值。linux系统中,创建的进程的个数是有限的(可以使用下面的命令查看)系统中正在运行的进程,可以在 /proc 目录下查看到(以数字命名的每个编号都是一个进程)
2023-05-01 18:30:20 409
原创 C++笔记
1.命名空间的使用方式1:std::cout;2.命名空间的使用方式3:3.命名空间的使用方式3:4.当名字出现冲突的时候,需要使用命名空间名::来区分5.没有被任何命名空间包住的名字,都在匿名空间 使用时::名字即可6.当命名空间中的名字和局部变量名冲突时,采用“局部优先”原则7.命名空间可以嵌套使用--不常用& 定义引用时,起到标识的作用,标识定义的是一个引用。在C++中,&有三个作用:1.定义引用时,起到标识的作用,标识定义的是一个引用。
2023-04-27 21:51:53 217
原创 IO进程笔记(一)
IO_FILE是一个结构体,当使用 fopen 函数打开一个文件的时候,就会产生一个FILE结构体,该结构体中保存着所有和当前文件相关的信息,后面再对文件进行IO操作的时候,使用的就是这个结构体。函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
2023-04-23 21:04:07 615
原创 数据结构(一)
逻辑结构:线性,一对一存储结构:链式存储,在内存中不一定连续链表中的每个元素都分为 :数据域和指针域,数据域存放数据,指针域指向下一个节点链表中的元素也叫做节点,单向链表都有一个头指针和头节点,头指针指向头节点,头节点中的数据域不存放有效数据。
2023-04-09 22:28:23 108
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人