【Keil(STM32)开发环境-(1)Keil软件安装步骤】教程文章相关的互联网学习教程文章

45 STM32 IIC主机、从机通信实例(ma51t12b触摸按键芯片)【代码】【图】

45.1引言 最近在研究触摸按键板的通信,按键板主要用到的通信协议为IIC,事实上IIC的例子有很多,但大都都是模拟IIC的主机(引用某网友的评论),从机这边的内容还是比较少。 早在两三年前就跟着原子哥的学习资料,学习并操作过IIC的eeprom器件,但是依葫芦画瓢,虽然看了IIC的协议,但是还不算很透!!!只能说熟悉。最近接到这个项目,用到IIC通信,原本很快就搞定了,但是遇到了一些问题,发现是从机地址写错了(感觉是芯片厂商...

详细介绍如何读懂STM32开发板电路原理图以及芯片文档和开发手册,并编写一个测试程序:点亮一个LED灯【代码】【图】

详细介绍如何读懂STM32开发板电路原理图以及芯片文档和开发手册,并编写一个测试程序:点亮一个LED灯 https://blog.csdn.net/bjbz_cxy/article/details/80081886 开发环境:开发板:STM32PZ6806L芯片:ARM_STM32F103_ZE 软件开发环境:KEIL5 开发所需资料: STM32F1XX芯片电路原理图 STM32F1XX系列芯片手册 XX代表系列版本号,ARM公司开发的芯片大多数都是一样的,除非增加了新功能才会更正芯片手册,XX就代表该文档支持系列版本!...

想要从编程小白成为达人,这些你必须知道!(附STM32学习指南)

学习一直都是不容易的,在工程师的世界里可能是更加的需要我们付出时间和精力。而学习能力在现在这个时代又是显得十分的重要,相信许多烧友们对编程的学习也是十分感兴趣的,或者正在学习的过程中。 所有小编今天特别整理了一份满满的干货给到小伙伴们学习和借鉴, 创客学院带你零基础学习电子产品设计。http://www.makeru.com.cn/live/3727_1388.html?s=70408 我知道现在有成千上万的资源可以“教你如何编码”。但是,这绝对不是这...

stm32的GPIO编程之寄存器操作【代码】

直接寄存器操作 编程思路 ① 找到控制LED灯连接的GPIO口PB5和PE5 ② 确定GPIO口工作模式:推挽输出,高电平灯灭,低电平灯亮 ③ 确定端口寄存器映射地址 ④ 编程,读写相应的寄存器 3种方式: ? 直接写寄存器ODR ? 写BSRR ? 位带操作 ⑤ 编译、下载、调试 1. ODR直写方式: PB的基地址0x40010C00 PE的基地址0x40011800 PB5设置: ? CRL:地址0x4001 0C00 + 0x00。值:CNF5[1:0]=00、 MODE5[1:0]=11,故CRL[23:20]=0x3,其他位保持不...

stm32结合TFLCD编程遇到的问题之.\Objects\EXTI_Project.axf: Error: L6218E: Undefined symbol POINT_COLOR (refer【代码】【图】

在TFLCD屏幕中遇到的问题及解决方案 1、问题提出 在对正点原子提供的有关TFLCD屏幕做移植过程中,编译过程中没有报错,但是链接时就出现了报错,报错信息如下图所示:像这种错误,无法定义到错误所在处,也定义了相关变量,那这种错误怎么造成的呢?大概是在tflcd.o文件中没有找到"POINT_COLOR"和”lcd_dev“这两个变量,那么tflcd.o文件怎么生成的呢?其通过工程中的tflcd.c通过编译生成,也就是我们在c文件中未定义未定义这两个变...

STM32基于汇编方式创建工程(原理与实例)【代码】【图】

文章目录 一、创建工程二、编写代码三、分析生成的 hex 文件四、基于 MDK 创建 STM32 汇编程序:串口输出 Hello world五、总结六、参考一、创建工程 实验所用环境为MDK keil5 Project ——> New uVision Project 选择芯片,我用的开发板是野火STM32F103MINI,芯片选择为STM32F03RC 在启动环境里面选择CMSIS 里的 CORE;Device 里的Startup 二、编写代码 添加源文件 向建好的工程中添加源文件,右击 Source Group 1 ,点击 Add N...

STM32中vPortFree()出现异常的问题解决(未完成)【代码】

1. 先从常见的vPortFree()出现异常有那几种可能性?本次使用FREERTOS系统,从发送的源头开始找起 1staticvoid sendToQueue(constchar *data,uint16_t len){2//这是个临时变量,是否OK? 3 NB_Raw_Data *send = NULL;4// send=(NB_Raw_Data *) malloc(sizeof(NB_Raw_Data));5//分配的空间是512+2个字节 6 send=(NB_Raw_Data *) pvPortMalloc(sizeof(NB_Raw_Data));7if(!send){8return ;9 } 10 send->len=len; 11if(len > 514...

用STM32玩SR04(测距、串口显示、OLED显示)【代码】【图】

文章目录 用STM32玩SR04(测距、串口显示、OLED显示)超声波模块使用SR04初始化SR04使用串口打印数据SR04使用OLED来传输数据,并显示在OLED上用STM32玩SR04(测距、串口显示、OLED显示) 开发板:STM32F103ZET6(正点原子F103核心板) 硬件:HC-SR04,随便就能买 软件:Keil MDK5.29 Gitee项目已发布,需要源码请自助下载 STM32F103ZET6:地址(gitee) 这次玩的是HC-SR04,一种超声波测距模块,便宜又好用,长着两个不知道像什么的圆...

STM32串口中断的一些资料

在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里。以供自己查阅,以及方便其他人。TC ====TXE顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理的方式,从队列以及FIFO方面写起。 SECTION 11234567891011121314151617181920212223242526272829303132333435/*调试STM32串口过程中发现一个奇怪的问题,初始化串口1口,使能串口发送完成中断后,立刻就进入了发送完成中断。仔细的查阅...

stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因【图】

我使用库函数建的工程(非Keil自带库),为了实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信,发现使用库函数建的工程程序不能通过,读出来的数据和写的数据不一致,这样就产生了问题,于是尝试了keil自带库进行实验,结果成功了(当时有点小激动)。大家有谁知道是什么原因,希望可以分享出来哈。 实验目的:为实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信 (1)这是...

stm32 定时器使用

一个定时器多个通道 不同PWM频率 //void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)//{// uint32_t channel = htim->Channel;// // /* 获取当前计数 */// uint32_t count = __HAL_TIM_GET_COUNTER(htim);// // switch(channel)// {// case HAL_TIM_ACTIVE_CHANNEL_1:// /* 设置比较数值 */// __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, count + 1699);// break;// case HAL_TIM_A...

STM32中断控制的流程

对于 STM32 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、输入捕获、输出匹配、DMA 申请等。所有TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? 1.因为cortex_m3 内核对于每一个外部中断通道都有相应的控制...

学习STM32编程的小车过程中的笔记 2021/4/5【代码】【图】

/*********************************************************************/ RTC Real_Time_Clock /*********************************************************************/ 付费换来的笔记——看门狗详解 /*********************************************************************/ 一 背景(雾) 单片机的工作常常会收到外界电磁场的干扰,造成程序跑飞,陷入死循环 处于对单片机运行状态进行实时监测的考虑 便产生了专门用于检...

关于stm32 MCU申请动态内存malloc的认识

首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x00000200 \\也就是 512字节;但是一般单片机的内存都比较小,而且没有MMU,malloc 与free的使用容易造成内存碎片。而且可能因为空间不足而分配失败,从而导致系统崩溃,因此应该慎用,或者自己实现内存管理。以下摘自网络:在函数中使用malloc,如果是大的内存分配,...

stm32

时钟每跳1兆次,可以执行1.25兆条指令。指令周期=时钟周期*1.25,时钟周期是1/72mhz,故指令周期是(1.25/72mhz)约是0.0174us。 stm32 属于ARM CortexM3,多数指令是单周期的。 cortex-m3是三级流水线,同时执行3条指令,指令周期不定,分支指令也可能清空流水线,导致预先执行的指令失效。 ARM官方的数字是1.25MIPS/MHz,我的理解就是每个周期平均执行1.25条指令。