- 博客(32)
- 收藏
- 关注
原创 esp8266Arduino开发
注意Serial.println()和Serial.printf()的区别是ln的是自动换行,后者不换行。在APP里面添加独立设备-网络接入-复制key(设备秘钥)-返回独立设备-新建按钮-编辑按钮。通过网页端按钮实现继电器的控制(WIFI插座)(把IP地址直接复制到网页就可以点开关了 )测量水位并在手机APP显示---在按钮中添加新建组件对象。通过小爱音箱实现继电器的语音控制(WIFI智能插座)通过手机APP实现继电器的控制(WIFI插座)DHT11测量温湿度并在手机APP显示。测量水位并在网页端显示。
2023-10-29 16:52:24
437
原创 STM32生成反汇编文件
C函数:return sum;让Keil生成反汇编:为例方便复制,制作反汇编的指令如下:C函数add的反汇编代码如下:i.addadd。
2023-10-24 22:30:38
970
原创 事件组的理论
事件组的创建 xEventGroupCreate 设置事件组 xEventGroupSetBits 等待事件组 xEventGroupWaitBits。事件组的原理,每一个事件组忙完自己的事之后要设置uxEventBits 的每一位。同步点 xEventGroupSync。
2022-11-08 17:15:25
142
原创 常见keil消除警告和报错
1-D: last line of file ends without a newline 文件最后一行不是新行解决:保证文件最后一行什么符号也没有: missing return statement at end of non-void function “xxxx” 没有返回值解决: 检查并在所指出的函数中添加返回值语句,通常是编写程序时候设定了返回类型但是没有设定返回值,需要注意的是这个问题有时候会导致建立文件时产生错误。
2022-11-08 16:36:52
5226
原创 互斥量的理论
什么是递归上锁 增加了递归的功能,第二次上锁的时候不会进入阻塞状态。如果不用递归锁,就会变成死锁 第二次上锁的时候会进入阻塞状态。优先级反转现象 解决方法是优先级继承。能解决递归上锁/解锁的问题。能解决优先级反转的问题。跟二进制信号量的对比。
2022-11-08 01:24:42
107
原创 信号量的理论
信号量和 队列的对比 信号量的分类:计数型信号量,二进制信号量信号量的计数值都有限制:限定了最大值。如果最大值被限定为1,那么它就是二进制信号量;如果最 大值不是1,它就是计数型信号量使用信号量之前,要先创建,得到一个句柄;使用信号量时,要使用句柄来表明使用哪个信号量。 对于二进制信号量、计数型信号量,它们的创建函数不一样:xSemaphoreCreateBinary xSemaphoreCreateCounting创建计数型型号量 static SemaphoreHandle_t xSemC
2022-11-08 00:59:18
227
原创 队列的应用
队列(queue)可以用于"任务到任务"、"任务到中断"、"中断到任务"直接传输信息。队列中消息如何保存 怎么向队列发送数据、怎么从队列读取数据、怎么覆盖队列的数据。本章涉及如下内容: 怎么创建、清除、删除队列。读写队列时如何影响任务的优先级。在队列上阻塞是什么意思。怎么在多个队列上阻塞。
2022-11-08 00:09:20
164
原创 Keil5进行STM32F103C8T6的软件仿真
设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil的仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行。输入你想要查看的引脚,我这里用的是PB0,所以需要输入PORTB.0(格式为PORTX.X),如果显示没有发现,那么说明是前面的debug配置有错误,需要和你使用的STM32的型号一致。开始仿真,这个时候会多出来一个工具条,就是Debug工具条。
2022-11-04 15:53:42
7409
1
原创 SSD1306显示
功能描述:连续发送N个写入显存的数据:开始信号->设备地址->控制字节->N个GDRAM数据->停止信号。* 功能描述:连续发送N个写入显存的数据:开始信号->设备地址->控制字节->N个GDRAM数据->停止信号。* 功能描述:I2C发送命令给OLED:开始信号->设备地址->控制字节->GDRAM数据->停止信号。* 功能描述:I2C发送命令给OLED:开始信号->设备地址->控制字节->命令数据->停止信号。
2022-11-03 17:29:11
981
原创 调试绝招—断点
总结,当函数发生异常时。找到函数的起始地址,查看当前寄存器的值,对着 汇编文件看,先要启动这个函数才能定义未定义指令的异常。未定义异常错误函数 在汇编里面。传入的参数为0,参数被破坏了。对于一些莫名奇妙的错误。函数,替换为一下类容。
2022-10-31 11:22:31
27353
原创 调试绝招—栈回溯
* context + 16*4 结构体类型指针加1,相当于加了整个结构体 */找到汇编里面的 HardFault_Handler 函数,注销原来的代码,添加一下代码。然后在stm32xx_it.c中包覆盖HardFault_Handler这个函数。串口打印找到PC寄存器的地址 查看反汇编。保存在哪儿 栈。
2022-10-31 11:10:28
1078
原创 环形缓冲区和printf中断重定向
/ 发送完成标志,1完成0未完成。if(huart->Instance == USART1) // 判断进来的是否是USART1这个UART设备。if(huart->Instance == USART1) // 判断进来的是否是USART1这个UART设备。
2022-10-27 15:46:34
280
原创 按键外部中断
if(KEY1_PIN == GPIO_Pin) // 判断进来的外部中断线连接的引脚是不是按键的引脚。* 功能描述:按键的GPIO重新初始化为双边沿触发外部中断。* 函数名:HAL_GPIO_EXTI_Callback。* 函数名:KEY_GPIO_ReInit。* 函数名:KEY_GPIO_ReInit。
2022-10-27 11:32:30
328
原创 I2C协议和实现代码
data 在SCL的高电平下,SDA的电平由高到低变化。* 功能描述:模拟发出I2C的停止信号-->在SCL的高电平下,SDA的电平由低到高变化。
2022-10-27 09:39:54
607
原创 百问网7天物联网智能家居(第七天)
主讲内容:代码调试,总结七天所讲的内容;所讲的重要代码(框架)Key_Update_WIFI((char *)wifi_data, 500); USART_StartRx(); //启动开始接收数据 //USART2_Transmit(tx_data, sizeof(tx_data), 500); //向模块发送数据 ESP8266_SendCommand("AT+RST", "OK", 500); HAL_Delay(800); ESP8266_SendCommand(...
2022-03-02 22:08:19
5757
原创 百问网7天物联网智能家居(第六天)
主讲内容:程序框架重要代码:static uint8_t rx_data = 0; //接收的字符static uint8_t rx_len = 0; //接收的长度static uint8_t usart_rx_buf[200] = {0};//保存接收的数据//调用HAL库接收函数,等待接收数据void USART_StartRx(void){ HAL_UART_Receive_IT(&huart2, (uint8_t...
2022-03-02 10:22:21
5200
原创 百问网7天物联网智能家居(第五天)
主讲内容:AT指令、ESP8266WiFi模块、网络基础。什么是AT指令:AT指令集或AT命令集,一般称其为AT指令AT指令的注意事项:AT 指令必须大写并且以回车换行符结尾(CR LF)默认波特率为 115200CR(Carriage Return)表示回车LF(Line Feed)表示换行Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行MAC OS系统采用回车符(CR)表示下一行Windows下编..
2022-02-27 21:38:16
1162
原创 百问网7天物联网智能家居(第四天)
主要讲的内容:中断系统、按键、串口通信中断是什么:指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。中断也是属于一种异常。STM32中断处理 STM32有众多异常和中断,其中内部中断源(USART、ADC等)直接由NVIC处理。GPIO引脚可以产生外部中断或事件,如是中断则交由NVIC处理,如果是事件则产生脉冲信号联动其它模块工作。 无论是内部中断源,还是GPIO产生的中断,都...
2022-02-27 21:09:32
1230
原创 百问网7天物联网智能家居(第三天)
主要讲解:单片机时钟树,STM32CubeMX配置时钟、STM32的GPIO输出模式、输入模式。STM32时钟树:STM32F103有4个时钟分别是:HSI高速内部时钟,HSE高速外部时钟,LSI低俗内部时钟,LSE低俗外部时钟。STM32的GPIO输入模式:上拉输入、下拉输入、浮空输入、模拟输入。 上下拉输入就是控制2个上下拉开关,当设置为上拉输入时,内部上拉开关,开启如果外部有个低电平则,IO原本读到的是高电平转为低电平 浮空输入是2个开关都断开,此时...
2022-02-27 20:53:34
1354
原创 百问网7天物联网智能家居(第二天)
第二天,主要是讲解 stm32结构、开发模式、创建工程。1.如何看懂原理图以100ASK_STM32F103_MINI的原理图为例,介绍如何看原理图,读者只需要掌握几个要点,就能基本理解原理图的标识含义。100ASK_STM32F103_MINI原理图在“4_硬件资料”文件夹里,读者打开《100ASK_STM32F103_MINI原理图.pdf》(后简称,《原理图》)配合本手册阅读。 《原理图》由开发板最小系统,加上外设模块和一些接口组成。在原理图上,除了用连线表示两个器件有连接外,更多的时候使用网
2022-02-27 20:26:04
1080
原创 百问网7天物联网智能家居(第一天)
前言年少时对电子方向时没有太多的了解,自从大学毕业完,工作时接触到了常见的一些产品,在一家产品设计公司工作,发现周围有很多喜欢完电子的爱好者,不知不觉自己也迷恋上了,自己目前还是一个新手,在接下来的几天里,将会一步一步跟着老师的步伐学习;自己没有太多的经验,所以只跟着上午的基础班,嵌入式运用的领域,什么是嵌入式。本人差不多还在入门期阶段,会一直坚持跟着百问网走下去的。什么是AMR架构,AMR公司是一家设计处理器架构的公司。采用ARM公司提供方案设计的处理器芯片统称..
2022-02-27 20:07:53
1242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人