我使用库函数建的工程(非Keil自带库),为了实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信,发现使用库函数建的工程程序不能通过,读出来的数据和写的数据不一致,这样就产生了问题,于是尝试了keil自带库进行实验,结果成功了(当时有点小激动)。大家有谁知道是什么原因,希望可以分享出来哈。
实验目的:为实现SPI对Si24r1芯片数据的读写,以验证stm32是否可以和si24r1能够正常通信
(1)这是...
一个定时器多个通道 不同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 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、输入捕获、输出匹配、DMA 申请等。所有TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? 1.因为cortex_m3 内核对于每一个外部中断通道都有相应的控制...
/*********************************************************************/
RTC Real_Time_Clock
/*********************************************************************/
付费换来的笔记——看门狗详解
/*********************************************************************/ 一 背景(雾)
单片机的工作常常会收到外界电磁场的干扰,造成程序跑飞,陷入死循环 处于对单片机运行状态进行实时监测的考虑 便产生了专门用于检...
首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x00000200 \\也就是 512字节;但是一般单片机的内存都比较小,而且没有MMU,malloc 与free的使用容易造成内存碎片。而且可能因为空间不足而分配失败,从而导致系统崩溃,因此应该慎用,或者自己实现内存管理。以下摘自网络:在函数中使用malloc,如果是大的内存分配,...
时钟每跳1兆次,可以执行1.25兆条指令。指令周期=时钟周期*1.25,时钟周期是1/72mhz,故指令周期是(1.25/72mhz)约是0.0174us。
stm32 属于ARM CortexM3,多数指令是单周期的。
cortex-m3是三级流水线,同时执行3条指令,指令周期不定,分支指令也可能清空流水线,导致预先执行的指令失效。
ARM官方的数字是1.25MIPS/MHz,我的理解就是每个周期平均执行1.25条指令。
基于物联网的智能窗户Day3
DHT11温湿度模块HC_SR501红外人体感应模块结果展示ending
DHT11温湿度模块传感器包括一个高分子电阻式感湿度元件和一个NTC测温元件,并于一个高性能8位单片机相连,通过单总线与微处理器通信,只需要一根数据线。在相关例程基础上进行改动
//复位DHT11
void DHT11_Rst(void)
{ DHT11_IO_OUT(); //SET OUTPUTDHT11_DQ_OUT=0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT...
这个c8t6小车是我参加学校电赛的时候做的,目前具有红外寻迹,oled实时显示时间,蓝牙通信,在手机端上显示小车运动时间,还有加入了mpu6050模块和pid算法,实现了小车在跷跷板上的平衡。小车的照片和原理图都放在附件里了,大家可以看一看。
制作出来的实物图如下电路图
电机部分的程序,其他的在我附件里
**@par Copyright ©: 2010-2019, Shenzhen Yahboom Tech@file app_motor.c@author liusen@version V1.0...
接着上篇文章继续,STM32读写SPI FLASH
(1)更改GPIO配置 由于没有使用到硬件的SPI,那么将硬件初始化SPI部分进行删除,取消GPIO的复用功能,然后更改MOSI和SCLK引脚为输出模式,MISO更改为输入模式。 (2)改写uint8_t SPI1_SendByte(uint8_t byte)函数
void w25qxx_init(void)
{/*!< Enable GPIO clocks,使能GPIOB硬件时钟 */RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB, ENABLE);//端口配置 PB3 PB5GPIO_InitStructure.GPIO_P...
STM32出现HardFault_Handler故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。出现问题时排查的方法:1、添加软件断点,一旦在调试过程中出现Hard Fault 则会停在__breakpoint(0)处。void HardFault_Handler(void)
{ if (CoreDebug->DHCSR & 1){ //check C_DEBUGEN == 1 -> Debugger Connected __breakpoint(0); // halt program ex...
GP2Y1010AU0F传感器接线方式如下:使用PA0接收模拟信号,PB1发送脉冲信号。代码如下:GP2Y.c#include "GP2Y.h"
#include "system.h"u16 AD_PM;
void GP2Yinit(void)
{
//定义变量
ADC_InitTypeDef A_InitStructure;
GPIO_InitTypeDef G_InitStructure; //PA0
GPIO_InitTypeDef Gpio_InitStructure;//PB1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC2通道时钟
...
刚开始学习的是51单片机,这次毕设老师让使用的是stm32的芯片,因为之前买过正点原子的mini开发板和st-link下载器,所以我尝试直接按照图片sw模式与最小系统板连接。结果没法下载,我也不知道为什么。 之后有一个同学和我说用之前我使用过的stc15的下载器也能下载stm32的程序。用的软件是mcuisp,之后我按照他的说法改变了我最小系统板上的BOOT设置,然后下载器和最小系统板的连线是 GND----GND,VCC---VCC,RXD---PA9,TXD---PA10...
1、Keil软件安装步骤
1.1、安装详细步骤
1. 从官网得到Keil安装包(MDK-Arm):
https://www.keil.com/download/product/图 1-1 Keil官网下载界面
2. 在非系统盘(除c盘外)新建Keil_v5文件夹,用于存放keil软件。图 1-2 选择路径
3. 双击MDK531.EXE开始安装,点击【next】。图 1-3 安装界面
4. 勾选【agree】,点击【next】。图 1-4 安装界面
5. 选择安装路径【Browser…】
放置在我们在一步建好的Keil_v5文件夹中,标蓝的部分需要...
2、Keil导入设备系列包
2.1、导入芯片包详细步骤
1. 下载芯片包
Keil5不像Keil4那样自带了很多厂商的MCU型号,Kei5需要自己安装芯片包,例如我们用的STM32F103RET6。可以从官网下载芯片包:http://www.keil.com/dd2/pack/图 2-1 Keil官网下载包 也可以直接使用Keil.STM32F1xx_DFP.2.3.0.pack,其中xx代表兼容不同版本,本芯片包可以支持我们当前所用的STM32F103系列,同时也支持其他F1系列,例如F100、F101等。
2. 打开Keil软件,点...