文章分类 - STM32
摘要:程序继承上一节内容:https://www.cnblogs.com/josephcnblog/articles/9220312.html 工程结构: 程序清单: bsp_usart.h bsp_usart.c bsp_i2c_gpio.h bsp_i2c_gpio.c bsp_i2c_eeprom.
阅读全文
摘要:读取JEDEC ID(FLASH型号) 程序清单: bsp_usart.h bsp_usart.c bsp_spi_flash.h bsp_spi_flash.c main.c 实验结果: 扇区擦除操作 擦除后,被擦除的扇区数据都是0xFF,即所有位都为1 程序清单:继承上面的程序 bsp_spi_
阅读全文
摘要:转自:https://www.cnblogs.com/yangguang-it/p/7111181.html SPI—读写串行 FLASH SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总
阅读全文
摘要:【1】bsp_usart.h、bsp_usart.c、bsp_i2c_gpio.h、bsp_i2c_gpio.c这四个文件和day19一样 【2】bsp_i2c_eeprom.h 【3】bsp_i2c_eeprom.c 【4】main.c 测试: 截图开头: 截图结尾: 完整内容:
阅读全文
摘要:实验:在day18章节中已经写好了I2C的底层函数,这一节调用这些函数实现STM32对EEPROM的写入单个字节和读取单个字节的操作 工程结构: 程序清单: 【1】bsp_usart.h 【2】bsp_usart.c 【3】bsp_i2c_gpio.h 【4】bsp_i2c_gpio.c 【5】bs
阅读全文
摘要:相关知识: 工程结构: (1)bsp_i2c_gpio.h (2)bsp_i2c_gpio.c (3)main.c
阅读全文
摘要:单片机向上位机发送数据有两种方式: (1)使用CPU发送:包括使用USART_SendData(DEBUG_USARTx, (uint8_t) ch)函数、printf()函数、中断,但使用CPU会占用CPU资源,负荷大,一般不使用CPU发送 (2)使用DMA直接存储器发送数据,不占用CPU资源,让
阅读全文
摘要:各个串口的引脚说明: 如果是同步通信,则会使用到SCLK同步时钟,下面是它的结构体,如果是异步通信,就用不上(实际中常用的是异步通信) USART串口通信使用到固件库函数: 下面是要做的实验: (1)编写简单的串口通信实验:从开发板发送数据到电脑的串口调试助手 (1)拷贝工程模板,改工程名为:USA
阅读全文
摘要:SysTick:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。 counter在时钟的驱动下,从reload初值开始往下递减计数到0,产生中断和置位COUNTFLAG标志。然后又从reload值开始重新递减计数,如此循环。 代码: 1
阅读全文
摘要:工程结构: bsp_exti_key.c bsp_exti_key.h stm32f10x_it.c stm32f10x_it.h bsp_led.c bsp_led.h main.c 实验现象: 将程序烧录到单片机中,按reset复位键。D4灯亮,按下k1,灯灭,再按,灯亮,如此循环(上升沿触发)
阅读全文
摘要:固件库编程方式: 在main.c同级目录下新建目录:rcc 在rcc目录下新建两个文件:bsp_clkconfig.c和bsp_clkconfig.h bsp_clkconfig.h: bsp_clkconfig.c: LED相关的: bsp_led.h: bsp_led.c: main.c: 实验
阅读全文
摘要:转自:https://blog.csdn.net/z735640642/article/details/78042492 首先,任何外设都需要时钟,51单片机,stm32,430等等,因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入。 51单片机不需要配置时钟,是因为一个时钟开
阅读全文
摘要:STM32F103RCT6支持位带操作,但是现在的ST的高端产品已经不支持位带操作了,因为ARM公司提供的内核已经不支持,所以ST公司也无能为力。 位带操作指的是操作IO口的位,比如51单片机当中的sbit P0^0 = 0;(或者P0^0 = 0x00;),这样,可以直接控制某个位输出高电平或者低
阅读全文
摘要:KEY1控制LED1,KEY2控制LED2 bsp_led.h: bsp_led.c: bsp_key.h: bsp_key.c: main.c: 实验现象: 程序烧录到板子中,一开始LED1和LED2都是亮的(应该都是灭的才对),按下KEY1控制LED1的亮和灭,按下KEY2控制LED2的亮和灭
阅读全文
摘要:一、拷贝一份固件库工程模板 在User目录下,新建led目录,创建bsp_led.c和bsp_led.h两个文件(这两个文件只写和LED有关的程序,其他的功能模块要另外创建文件,这样好维护) 二、使用Keil打开工程 在User中将刚创建的两个文件添加进来 bsp_led.h: bsp_led.c:
阅读全文
摘要:所有工程都可以按照这个模板来创建。 一、创建目录: DOC放置有关工程的说明文档 Libraries放置固件库文件,startup是启动目录,项目启动时会运行这里的文件,core.....那些文件是单片机内核文件,这些文件直接拷贝现有工程的就好 STM32F10x_StdPeriph_Driver是
阅读全文
摘要:1. 什么是固件库 固件库就是函数,是ST公司封装好的函数,等待用户去调用,ST公司在stm32板子上设置了很多外设,外设里有很多寄存器。不需要用户去针对寄存器编程, 其一,用户不一定写的对,其二,方便用户操作,提高开发效率。相当于Java中的封装函数,学会使用就好。 2. 怎么获取固件库 (1)通
阅读全文
摘要:需要三步: 1、引脚 2、工作模式 3、引脚的速率 自己写固件库函数:目的是让程序的扩展性更好,便于程序维护和修改,提高开发和工作效率,使程序的复用性和适应性更强! 思路:把各个模块的公共部分抽离出来,放到一个自定义的结构体数据结构中,然后高度抽象函数,函数内不能写硬编码,让程序高度可用和复用! 结
阅读全文
摘要:为了方便程序的可读性,要把形如“GPIOC->ODR &= ~( 1<<2 );”的语句改成一个函数,增强可读性和可扩展性,比如换成下面的形式: 函数名(端口, 位) 工程结构: stm32f10x.h: stm32f10x_gpio.h: stm32f10x_gpio.c: main.c: 现象:
阅读全文
摘要:stm32f10x.h: main.c: 实验现象:D4和D5两个LED灯间断闪烁!和之前的实验现象一致
阅读全文