
单片机
梁檀
这个作者很懒,什么都没留下…
展开
-
Littlefs移植,FLASH用的是W25Q32
编写SPI FALSH的读写擦除函数/*** @brief W25Qxx 擦除整个扇区 * @retval uint32_t First_Addr : 第几块 */int32_t W25Qxx_SPI_EraseSector(uint32_t addrNb) { addrNb*=4096; uint8_t CommandArray[4] = {0}; int32_t res; CommandArray[0] = 0x20; //擦除扇区指令 命令为0x20,在原创 2021-01-29 11:22:19 · 3055 阅读 · 4 评论 -
关于STM32的SPI使用DAM首发的回调问题
本人第一次使用HAL库,然后用SPI操作FLAH,担心数据量大,于是打算使用DMA,之前是用的LL库然后发现了一个问题,SPI怎么都接收不到数据,想了一下应该是片选引脚的问题,我应该在DMA传输结束时关闭引脚,但是之前都是用LL库,判断标志位的,在HAL库我应该找到相应的回调函数。首先我发现在初始化DMA的结构体当中,可以定义回调函数,于是我就写了一个,如下图一,然后运行发现进不去这个函数,于是我就在DEBUG的时候拉出来这个结构体看了一下。咦,奇怪这个函数地址并不是我写的么,之后我又发现这个函数我重写原创 2021-01-27 18:41:54 · 2025 阅读 · 0 评论 -
用STM32F103获取ADS1220模数转换的值,以及C#做上位机的笔记
ADS1220ADS1220是一款具有四通道的,24bit的模数转换器,其中两两可以组成差分输入,内部有可以编程的放大器,最大的放大倍数是128。ADS1220的数据交换是通过SPI总线进行数据交换的,SPI工作在模式1。CPOL为0空闲时为低电平,CPHA为1,第二个边沿触发。ADS的指令:寄存器0:关于通道以及增益的配置寄存器1:关于转换速度的配置:不同工作模式下的转换速度:...原创 2019-12-19 15:37:35 · 4455 阅读 · 0 评论 -
用STM32F030F4的SPI总线获取BMP280的气压和温度
1.用STM32Cube MX生成SPI总线的初始化函数static void BMP280_SPI_Init(void){ LL_SPI_InitTypeDef SPI_InitStruct = {0}; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERI...原创 2019-11-22 10:50:10 · 3213 阅读 · 18 评论 -
用SYSTICK定时器的时基,来做按键防抖(一个时序事件触发形的程序架构)
用定时器来做按键防抖(一个时序事件触发形的程序架构)很多人做按键防抖的时候,都会使用delay让程序死在那里,这是一件很可怕的事情,一个delay都是几十毫秒,这对于一个指令周期频率上M的系统而言,这可是白白的浪费掉上万次的指令周期啊。所以系统中就有了分时复用的概念。按键扫描,只是我系统中的一个任务,我可以定时的去check这个任务的状态,这样依然会防止按键的抖动步骤1.在用SYSTICK...原创 2019-11-13 11:31:22 · 909 阅读 · 0 评论 -
基于YMODEM通信协议的,LL库,IAPSTM32下位机设计(移植自官方例程)
实验结果原创 2019-09-24 15:29:47 · 1294 阅读 · 0 评论 -
STM32,仿照LL库,编写FLASH的LL库(内有完成代码)(STM32F0)
不知道为为什么,STM32 LL库并没有FLASH的库函数,于是决定写一个LL库的特色,就是一个函数,只占用一个指令周期,比如,设置GPIO输出的状态,就是LL_GPIO_SetOutputPin();__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask){ WRITE_REG(GP...原创 2019-09-23 20:00:22 · 5886 阅读 · 1 评论 -
关于STM32 LL库的串口收发数据包的实验
CUBE的配置时钟48 M串口->115200,8,0,1程序static void TransmissionT_Data(uint8_t *p_data,uint32_t size){ while(size) { LL_USART_TransmitData8(COM,*p_data); while(!LL_USART_IsActiveFlag_TXE(COM))...原创 2019-09-16 11:09:22 · 6005 阅读 · 1 评论 -
一个完整的、超详细的关于A,B相可读取速度的电机的项目(PID稳速)的笔记(二)
/*这一篇笔记,主要是pid的调速的,以及一些心得*/PID 的调节PID控制器(比例-积分-微分控制器),由比例单元(P)、积分单元(I)和微分单元(D)组成[1]。可以透过调整这三个单元的增益Kp,Ki和Kd来调定其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。(摘自维基百科)其实作为一个小白博主来说,对于百科中所描述的也是似懂非懂的,但是通过这将近一月的调节也...原创 2019-09-06 17:22:12 · 896 阅读 · 1 评论 -
KILE5生成BIN文件的图文设置
打开kei5点击魔术棒选择USER电机自带的原创 2019-09-02 20:11:13 · 1014 阅读 · 0 评论 -
一个完整的、超详细的关于A,B相可读取速度的电机的项目(PID稳速)的笔记(一)
/*这一篇笔记,介绍的是关于器件的选型和一些小技巧的记录,以及STM32的定时器的编码模式*/项目的所需要的器件电机驱动芯片:TB6612单片机:STM32F030C8T6电机:一个具有A,B 相位输出得的、一圈输出11个脉冲的、减速比4.4、12V电机。开始前的关于C的一些小笔记(面向初学者)。位、字节、字、半字、枚举、以及位操作位:一个bit,二进制数中的一个位,在某些编译...原创 2019-08-31 11:32:06 · 740 阅读 · 0 评论 -
关于ARM_math数学库的使用
关于ARM_math数学库的使用ARM_math好强大的好吧,话不多说,请看截图各种数学库看到没有,好强大的说,其实使用这些写函数,最快上手的方法就是看官方手册,话不多说,上官方链接arm_math库的官网举个栗子:一般步骤1.首先就是在自己的工程里,加入arm_math的.lib文件2.在MDK中C++选项卡中加入ARM_MATH_CM0(不同内核不一样)这样才可以在工程中使用a...原创 2019-08-01 19:57:10 · 15784 阅读 · 4 评论 -
怎样快速入门一款全新的单片机和STM32单片机的LL库入门指南(个人经验,超详细的PWM配置)
怎样快速入门一款全新的单片机因为成本或者工程的特殊性,有时候不得不换用单片机,在单片机选型之后(一般官方都会提供选型手册),就要进行对这个芯片的开发。一个新的单片机的开发的技术支持无非来自官方和非官方(一些第三方大神的例程),首先要以官方为准,首先是官方的datasheet,还有官方的例程。当还是搞不懂的时候,再去找第三代,结合手册和官方例程研究。datasheet看datasheet真...原创 2019-08-06 11:08:36 · 2756 阅读 · 0 评论 -
ST单片机的ADC连续扫描设置
ST单片机的ADC连续扫描设置之前一直再用PIC和和泰的八位机,要想扫多个ADC,先向ADC通道相关的寄存里写第一个通道的值,然后扫描结束,再写另一个通道的值。不过用ST的单片机就很爽了,可以连续读多个通道的。STM32F0系列的ADC配置1.打开STM32CubeMx,这是一个很好用的工具,这里以STM32F072RB为例子,选择Analog(模拟),F0的模拟只有ADC,选择通道,然后再...原创 2019-08-02 14:08:02 · 1295 阅读 · 0 评论 -
超简单的实现flash的檫除,写入操作
超简单的实现flash的檫除,写入操作(基于LL库和STM32F030F4)因为LL库里并没有Flash相关的库函数,为了方便,于是我就仿照LL库的风格写了一个Flash函数库,连接:FLASH库的代码步骤1.将我的C文件和头文件添加到工程里。2.编写代码int main(void){ LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYS...原创 2019-08-07 10:38:22 · 1112 阅读 · 1 评论 -
STM32F0xx系列 基于LL库的Flash模拟EEPROM
步骤1 因为LL库里并没有Flash相关的库函数,为了方便,于是我就仿照LL库的风格写了一个Flash函数库,连接:Flash的函数2.这里的代码移植自STM32F091RC-Nucleo的官方应用直接到ST的固件包里去找ST的例程,直接移植官方例程的优点是,擦写平衡什么的,他们已经做好了3.用STM32Cube生成LL的工程,直接将相应文件添加进去工程结构4.在是stm32f0xx....原创 2019-08-07 13:49:44 · 3283 阅读 · 0 评论 -
关于DHT11的数据获取(STM32F030,基于LL库,内有超详细代码)
关于DHT11的数据获取DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。(摘自官方的描述)废话不多说,直接看时序图整体介绍,当一次开始之后,DHT11会发生40bit的信号,一共...原创 2019-08-10 13:04:47 · 5097 阅读 · 2 评论 -
STM32 LL库 I2C的个人笔记
I2C一直是特别常用的总线,之前用八位机的时候有好多是用单片机模拟的I2C或者类I2C,I2C两跟线,数据线和时钟线,在这里不做I2C时序的介绍(STM32手册里有,以及一些I2C的EPROM都会有很详细的介绍),这里只是对程序的笔记打开官方例程的I2C的工程,工程名字是I2C_OneBoard_Communication_PollingAndIT,他用了一块板子I2C3做主机,I2C1做从机,...原创 2019-08-16 16:25:16 · 9215 阅读 · 4 评论 -
关于stm32f030的DMA配置
关于stm32f030的DMA配置DMA的一般配置1.设置DMA的工作方式2.设置通道的优先级3.设置DMA的动作模式4.设置外设的增量5.设置内存是否增量6.设置外设大小7.设置内存大小8.设置数据长度9.设置外设地址10.设置内存地址11.使能DMA举个栗子:从ADC值到内存的搬运画了一个小图流程图(个人理解哦o(# ̄▽ ̄)==O)) ̄0 ̄”)o)首先呢就是要使...原创 2019-07-31 09:59:26 · 4315 阅读 · 0 评论