![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM
夕阳下的枫林
精通电路设计 嵌入式C语言
ARM DSP等开发
擅长数字信号处理 音频信号处理
了解FPGA/LINUX/RTOS
展开
-
STM32之KSZ8851的FMC配置问题——H7的单片机版本
上一篇忘了说了一个问题,那就是时钟,M4单片机采用的是168MHZ主频,所以这里的配置按照如下:这是查芯片手册得来的,而到了H7主频则为400MHZ,需要换算一下,下面给出H7的FMC驱动程序,H7的单片机型号为STM32H743IITx:基本上三部走:配置IO、配置MPU、配置FMC/* ************************************************************************************************原创 2020-09-03 11:11:34 · 2149 阅读 · 0 评论 -
STM32之KSZ8851的FMC配置问题
感谢支持,说实话很久没写博客了,毕竟靠爱发电真的很无奈,不过有人支持了,就再更新一篇。刚好问到关于KSZ8851的FMC配置问题,主要这个片子网上资料较少,可能用的人比较少吧,这是一款网络芯片,其实STM32本身就有网络功能,而使用FMC驱动KSZ8851的时候,是把它当成是NOR FLASH类型来用的。之前写的关于KSZ8851的驱动100%能用,而且我最近刚把它从M4的单片机移植到H7的单片机上,亲测可用。今天以STM32F37II为例说一下关于FMC的驱动。首先第一步要配置IO引脚,然后第原创 2020-09-03 10:52:32 · 2068 阅读 · 0 评论 -
STM32之MAX14830
驱动如下:/******************************************************************************* 文 件 名 称:BspMax14830.c* 文件功能概述:实现MAX14830驱动接口* 文 件 作 者: * 版 本:V1.0.0.0* 修 订 记 录:2018-4-28创建***...原创 2019-11-07 08:43:54 · 2564 阅读 · 0 评论 -
STM32之LTC2991
驱动如下:/******************************************************************************* 文 件 名 称:BspLTC2991.c* 文件功能概述:实现LTC2991接口声明* 文 件 作 者: * 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建*****...原创 2019-11-06 08:39:34 · 4121 阅读 · 1 评论 -
STM32之LTC2636
驱动如下:/******************************************************************************* 文 件 名 称:BspLTC2636.c* 文件功能概述:实现LTC2636的接口* 文 件 作 者: * 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建*****...原创 2019-11-04 16:29:12 · 873 阅读 · 0 评论 -
STM32之ONE WIRE
ONE WIRE总线是一种对硬件设计很友好,对软件设计不友好的总线,一根线可以完成供电、时钟、和双向数据的功能,时序要求非常严格,写驱动的时候最好配合示波器,通信速度并不快,但距离较远,传输百米以上没有问题。驱动如下:/******************************************************************************* 文 件 ...原创 2019-08-01 11:08:46 · 3399 阅读 · 0 评论 -
STM32之外部中断
首先配置外部中断的输入引脚和中断源:void LCR_Config(void){ EXTI_InitTypeDef EXTI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Enable GPIOC clock */ R...原创 2019-07-15 09:28:25 · 240 阅读 · 0 评论 -
STM32之Timer定时器
定时器属于常见功能,程序如下:/*********************************************************************************************************函 数 名: TimerApp_Init功 能: 定时器初始化参 数: p_s_Base_Add - TIM选择 ...原创 2019-07-05 10:05:52 · 786 阅读 · 0 评论 -
STM32之看门狗
看门狗就是当程序跑飞不能按时喂狗的时候进行芯片复位,看程序: /* 独立看门狗初始化,(1000000/40K)*256*800=5.12s*/ BSP_IWDG_Init(IWDG_Prescaler_256, (uint16)800);void IWDG_ReloadCounter(void){ IWDG->KR = KR_KEY_Reload;}以上就是初始...原创 2019-07-04 09:02:20 · 633 阅读 · 0 评论 -
STM32之UART
STM32的UART的驱动代码如下:void BSP_Uart_SetBaud(uint32 u32Baud){ GPIO_InitTypeDef s_GPIO_InitStructure; USART_InitTypeDef s_USART_InitStructure; NVIC_InitTypeDef s_NVIC_InitStructure; RCC_APB2Per...原创 2019-07-03 09:43:47 · 878 阅读 · 1 评论 -
STM32之SPI
STM32的SPI还是比较容易理解的,先看代码。下面是初始化的代码:/* *******************************************************************************功能:初始化参数:无返回:无************************************************************...原创 2019-06-01 09:14:57 · 860 阅读 · 0 评论 -
STM32之GPIO口
STM32笔者这里之STM32F1XX和F4XX系列的M3,M4的内核。库函数的名字一般叫做STM32Fxxx_GPIO.c和.h以F107为例,初始化GPIO的程序如下:void BSP_GPIO_Init( void ){ GPIO_InitTypeDef s_GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB...原创 2019-05-23 15:14:13 · 504 阅读 · 0 评论 -
STM32 同一组SPI总线上挂接不同协议的SPI芯片的问题
笔者最近工作的时候遇到了同一组SPI总线挂接了两种SPI芯片,一种是上升沿获取数据,一种是下降沿获取数据。明明有其他SPI总线可以用,在此就不吐槽硬件同学了。由于这两个芯片在程序运行中会反复查询,所以SPI会反复初始化。在调试的时候一般都是使用stm32f10x_spi.c中的这个函数void SPI_Init(SPI_TypeDef* p_SPIx, const SPI_I...原创 2019-04-25 14:37:25 · 2447 阅读 · 0 评论 -
STM32之MAX31826驱动
接https://blog.csdn.net/pxy198831/article/details/98038695,MAX31826是一款单总线的温度传感器,带有1K EEPROM驱动如下:/******************************************************************************* 文 件 名 称:BspMAX318...原创 2019-08-02 08:21:17 · 1640 阅读 · 2 评论 -
STM32之AD7194驱动
AD7194是一款16通道的ADC,采用SPI控制,驱动如下:/************************************************************文 件 名: AD7194.c模 块: AD7194读写模块详 述: 1) AD7194读写; 2) 芯片自检; 3) AD芯片温度读取。******************...原创 2019-08-06 16:10:59 · 1042 阅读 · 1 评论 -
STM32之DAC8875驱动
DAC8875是一款电压加电流型的4通道DAC,具有内部电压管理。驱动如下:#include "SysConfig.h"#include "DAC8875.h"#include "Delay.h"#include "driver_gpio.h"#include "SPI.h"/* * SPI极性配置 * SPI_CPOL = SPI_CPOL_Low; * SPI_CP...原创 2019-08-07 08:16:04 · 688 阅读 · 0 评论 -
STM32之DS1682
/******************************************************************************* 文 件 名 称:BspDS1682.c* 文件功能概述:实现DS1682接口声明* 文 件 作 者:xxx* 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建**************...原创 2019-10-09 16:31:54 · 654 阅读 · 2 评论 -
STM32之DP83848
/******************************************************************************* 文 件 名 称:BspDp83848.c* 文件功能概述:实现DP83848的接口* 文 件 作 者:xxx* 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建*************...原创 2019-10-08 13:58:42 · 2088 阅读 · 0 评论 -
STM32之ADS8332
这是一款ADC芯片,驱动如下:/******************************************************************************* 文 件 名 称:BspADS8332.c* 文件功能概述:实现ADS8332的接口* 文 件 作 者:* 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建...原创 2019-10-03 17:44:32 · 2716 阅读 · 2 评论 -
STM32之ADM706驱动
ADM706是一款硬件看门狗,驱动如下:/******************************************************************************* 文 件 名 称:BspADM706.c* 文件功能概述:实现ADM706接口声明* 文 件 作 者:* 版 本:V1.0.0.0* 修 订 记 录:2017-6-...原创 2019-10-01 10:18:29 · 1075 阅读 · 0 评论 -
STM32之AD9850驱动
AD9850是一款DDS,驱动如下:/******************************************************************************* 文 件 名 称:BspAD9850.c* 文件功能概述:实现AD9850接口* 文 件 作 者:* 版 本:V1.0.0.0* 修 订 记 录:2017-6-30创建...原创 2019-09-06 08:07:26 · 6266 阅读 · 1 评论 -
STM32之AD5410驱动
AD5410是一款ADI的DAC,驱动如下:/******************************************************************************* 文 件 名 称:BspAD5410.c* 文件功能概述:实现AD5410的接口* 文 件 作 者:* 版 本:V1.0.0.0* 修 订 记 录:2017-6...原创 2019-09-05 08:31:31 · 3547 阅读 · 1 评论 -
STM32之AD8403驱动
/* File: <AD8403.c> *//*********************************************************************************************************** 模块名称 : AD8403驱动程序* 文件名称 : AD8403.c* 版 本 : V1.0* 说 ...原创 2019-09-03 10:42:48 · 1784 阅读 · 0 评论 -
STM32之LTC2656驱动
驱动如下:#include <stdint.h>#include <math.h>#include "LTC2656.h"#include "BSP.h"#include "SysConfig.h"#include "global.h"#define Debug_SPI 0#define LTC2656_NUM_0 0U#def...原创 2019-09-02 08:17:00 · 961 阅读 · 0 评论 -
S3C2440之启动文件
这是从一个大神手里获取的启动文件的注释,相当丰富,有利于学习汇编和了解ARM的启动过程,下面一起来看一下程序:;=========================================; NAME: 2440INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-...原创 2019-01-16 17:26:25 · 371 阅读 · 0 评论 -
S3C2440之按键中断
按键中断是最常用也是最简单的中断,程序代码如下:/*******************************文件名:key.c *功能: 按键程序 *创建者: 潘星宇 *最后修改:2013.03.26 *备注: * *******************************/#...原创 2019-01-16 17:20:18 · 254 阅读 · 0 评论 -
S3C2440程序仿真和下载
S3C2440不同于一般的M0~M7的内核的ARM,片内的FLASH太少,一般不在片上运行程序,其仿真和固化(程序FLASH下载)都采用片外的芯片,这点与DSP芯片C5509很像,先来说仿真,运行在片外内存上,需要下面这个文件:/******************************************************************************/...原创 2019-01-03 20:11:28 · 1166 阅读 · 0 评论 -
NUC140之IO口
NUC140的I/O的作用,无非是输入、输出、双向和外设功能,这些功能是复用的,当上电未初始化时,根据芯片手册,NUC140的I/0口默认输出高电平。I/O的使用比较基础,初始化上述几个功能然后再使用即可,但是有几点需要注意。1.使用外设功能,例如UART等,要先将对应的引脚初始化为UART功能;2.如果I/O设置为双向功能,在读取数据前,最好先写1,再读。这样做是为了防止在读...原创 2018-12-24 12:24:51 · 341 阅读 · 0 评论 -
NUC140之中断
中断属于比较深入的ARM课程了,可以简单理解为在程序正常循环运行中,满足一定程度的条件就会打断该循环,优先运行。最简单的中断是I/O中断,一般分边沿触发和电平触发,边沿触发后,要判断电平的高低程度,也可以作防抖动处理,程序如下/******************************************文件名:VOP_OK_error_solution.c ...原创 2018-12-28 23:14:21 · 333 阅读 · 0 评论 -
NUC140之I2C和AT24C32
I2C总线一根数据线,一根时钟线,起始和终止条件如下:AT24C32是一款4K字节的EEPROM,它的字节写如下图:具体的文字描述结合我的程序一看就明白了,我的程序注释非常丰富/******************************************文件名:at24c32.c **功能:EEPROM读写程序 ...原创 2018-12-27 20:42:55 · 701 阅读 · 0 评论 -
NUC140之工程初始化
本人的所选的时NUC140VE3AN,50MHz主频,128K字节 FLASH,16K字节RAM。工程起步的话最好从开发版例程或者网上下载,自己从零新建工程的话需要如下一些文件还需要官方的库函数以及对应的库文件之后还要正确设置KEIL工程(如果用的是KEIL开发的话)这些对入门者来说都不友好,所以建议在别人新建好的例程上进行二次开发,省时省力,尤其是现如今ARM芯片种类...原创 2018-12-21 12:51:31 · 339 阅读 · 0 评论 -
NUC140之SPI和AD5441
NUC140的SPI库函数还是写的很不错的,我们看这个函数说明:/*---------------------------------------------------------------------------------------------------------*//* Function: DrvSPI_Open ...原创 2018-12-26 20:49:17 · 415 阅读 · 0 评论 -
NUC140之定时器2
继续上一篇的NUC140之定时器。如果我们在同一个工程里初始化了一个定时器例如TIMER0,并且用DrvTIMER_SetTimerEvent(参数省略)设置了事件,如果我们要修改进入事件的时间的话,一定要调用DrvTIMER_ClearTimerEvent(E_TMR0,0);这个函数,然后才能再用DrvTIMER_SetTimerEvent设置新的事件。也就是说,单片机初始化话之后...原创 2013-04-26 22:03:53 · 910 阅读 · 0 评论 -
NUC140之看门狗
看门狗的原理:我见过的看门狗一般分为两种:一种是看门狗本身是个定时器,设定好时钟和初值后,如果在定时时间到达之前不喂狗(清除某个寄存器或置位某个位),芯片就会产生一个中断或者复位(像S3C2440A);另一种就是像NUC140这样的,定时时间到了以后会产生一个中断,然后延迟1024个看门狗时钟周期后才会复位芯片。这两种都需要喂狗,但是喂狗的语句所放置的地方就不同了。对于第一...原创 2013-02-25 21:11:46 · 1143 阅读 · 0 评论 -
NUC140之ADC
NUC140的ADC比较简单,只需要设定好时钟和采样模式就OK了下面先看初始化程序void ADC_initialize (void){ DrvADC_Open (ADC_SINGLE_END, //Single模式 ADC_SINGLE_CYCLE_OP, //单周期扫描模式 0xf3, //设置要转换的口为ADC0,1,4,5,6,7 /1111 0...原创 2013-03-10 20:05:14 · 1293 阅读 · 2 评论 -
NUC140之设置主频
本人用的是NUC140VE3CN,这款芯片主频是50MHz,如果采用默认值的话大约为20多M,如何才能设置到50MHz呢。根据芯片手册,这款单片机的主频频率就是HCLK的频率,而HCLK要想达到50MHz,需要选择时钟源为PLL输出,在此我选用的外部晶振为12MHz。贴出程序如下:void setup_HCLK (void){ uint32_t u32PllCr; /*初始...原创 2013-02-01 19:57:24 · 1182 阅读 · 0 评论 -
NUC140之PLL(频率合成器LMX2541)
PLL 是一种集成了锁相环、鉴相器、振荡器为一体的频率合成芯片,以LMX2541为例,它是一款小数分频的频率合成器,输出频率31.6MHz~4GHz,具有非常好的相位噪声和杂散指标。采用SPI控制驱动程序如下:#include "PLL_Thread.h"#include "DrvSPI.h"const int16_t OffSetArray[] = {8000, 7500, 7...原创 2018-12-29 16:21:44 · 1879 阅读 · 1 评论 -
NUC140之串口UART
UART可以说是串行通信用的最多的协议,相对其他协议也比较简单,一般只要设置好比特率,数据位,停止位和校验位即可。下面来看程序。#include "UART.h" #include <stdio.h>volatile static uint8_t Rx_UART[20] = {0}; //串口存储接收数据数组,加static作为静态全局变量仅能在本文件...原创 2018-12-25 20:22:14 · 879 阅读 · 0 评论 -
S3C2440之液晶屏LCD驱动
作为一款高端的CPU S3C2440(2013年的时候),自带LCD液晶屏的UI接口,也就是外设,只需要对照对应的LCD手册设置寄存器即可所用LCD是一款16BPP的320(宽)X240(高)的LCD显示屏/*******************************文件名:LCD.c **功能: 液晶显示程序 **创建者: 潘星宇 **最后修...原创 2019-01-10 20:53:35 · 464 阅读 · 0 评论 -
S3C2440之IIC
IIC个人感觉驱动的中断步骤还是挺麻烦的,要按照步骤流程来,程序如下:/*******************************文件名:IIC.c **功能: AT24C02底层驱动 **创建者: 潘星宇 **最后修改:2013.03.20 **备注: ** ***********************...原创 2019-01-15 19:01:20 · 376 阅读 · 0 评论