• 18
    回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

从硬件到单片机----深入学习STM32

从大学第一次知道单片机到现在,断断续续和单片机打了6年的交道了,在这期间接触最多用的最多的还是51单片机,从最开始的89C51到中间的STC15系列再到现在的STC8系列,虽然型号是越来越高级了,但是其本质还是一个51单片机,虽然用了不少,但是还是感觉自己的单片机编程能力不怎么样,终其原因还是C语言基础不牢固,同时也感觉到编程能力对自己能力的提高限制越来越明显了,最明显的就是有时候想做一个小东西来玩儿一下,但是需要单片机来配合,最后发现自己搞不定,就只能无奈的放弃。

所以现在下定决心好好的深入的学一学单片机,考虑到51单片机的性能已经不太满足需要了,所以决定转向STM32,正好手上有一块吃灰很久了的STM32F103开发板,正好拿出来用用,在大学的时候STM32真的是算是最热门的单片机,基本上实验室里每个撸单片机的最后都在整STM32,但是奈何当时自己痴迷于硬件,对单片机不太感兴趣,所以也就没去跟风学32,现在想来都是泪啊。。。。。。。

闲话说了这么多,接下来就进入正题,先说编程工具,这个肯定是Keil了,毕竟熟悉,然后学习平台有两个,一个是原子的STM32F103的开发板,这个开发板上该有的外设基本都有,这个主要是用来学习用的,另一个就是自己画的一个STM32F103C6控制板,这个控制板是给我的电子负载画的,算是一个小型的项目实战吧。

控制板上搭载了一片DAC8562,一片ADS1115,一路485通信,一路CAN通信,一个外部Flashz芯片再加五个按键、一块TFT彩屏和四个LED灯,这个控制板算是把单片机常用的功能都包括进去了,包括SPI通信,IIC通信,串口通信,CAN通信,按键控制和屏幕显示。

2.4寸的TFT和1.8寸的TFT

开发板

全部回复(18)
正序查看
倒序查看
2022-03-31 21:24

今天晚上先来测试一下串口通信,8562和1115的驱动程序是在网上找得,之前测试过能够正常运行,等会儿看能不能用串口来控制8562输出,哈哈哈哈

1
回复
2022-03-31 23:00

郁闷~把串口程序加进去后程序就直接飞了……,屏蔽掉串口通信部分,居然还原不回去了~我丢

1
回复
2022-03-31 23:23

越来越迷了~用开发版来跑串口通信刚开始还能跑,把其他部分加进去后又死翘翘了,然后又还原不回去了~emmmmmm

1
回复
2022-04-01 22:22
@川理学子
越来越迷了~用开发版来跑串口通信刚开始还能跑,把其他部分加进去后又死翘翘了,然后又还原不回去了~emmmmmm

坐等杰作

0
回复
2022-04-01 23:35

哈哈哈~搞定了,折腾了一晚上,总算是把串口控制DA输出这个功能搞定了,其实程序也不复杂,就是老是出一点小毛病,然后就不停地调试。

串口使用的USART1,走的485通信,串口程序就直接移植的例程,改了改里面的端口和串口号。

这个是实现控制的代码,因为一次性只能接收一个字节,所以就对接收的数据做了点小处理,让他变成16位的数据。

1
回复
2022-04-01 23:36
@千里知外
坐等杰作

哈哈哈~一起学习

0
回复
2022-04-01 23:43
@川理学子
哈哈哈~搞定了,折腾了一晚上,总算是把串口控制DA输出这个功能搞定了,其实程序也不复杂,就是老是出一点小毛病,然后就不停地调试。串口使用的USART1,走的485通信,串口程序就直接移植的例程,改了改里面的端口和串口号。这个是实现控制的代码,因为一次性只能接收一个字节,所以就对接收的数据做了点小处理,让他变成16位的数据。

咦~我的图片呢,为啥没有了

0
回复
2022-04-10 22:10

好久没来更新了,最近有点小忙,今天来更新一手按键检测的代码。

按键算是单片机里面最常用的一个功能器件了,寻常的按键检测程序就是下面这种

通过识别按键按下后的电平变化,检测到按键按下后再延时识别按键的松开,然后执行相应的按键功能。

这个按键检测程序简单是简单,但是有个问题就是在while(!K1)这里,如果按键一直按下不松开,就会导致程序一直卡在这儿干不了别的事。

所以,还是需要换一个按键处理程序。

0
回复
2022-04-10 22:24

后来在单片机论坛里闲逛的时候发现了一个非常牛逼的按键处理程序,牛逼到什么程度呢,就是整个的按键识别就只有四句话,而且还能区分长按和短按,废话不多说,上图

除去变量定义,剩下的四句话就是用来识别按键的,Trg是用来识别短按的,而且支持检测多个按键同时按下。Cont是用来识别长按的。

之所以说这个代码牛逼,就在于通过异或和位与操作后,就能实现常用的几种按键操作识别。而且长按按键不会阻塞主程序的运行。

关于这个处理程序的出处,在这儿:https://blog.csdn.net/hooter1004/article/details/7441844?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164960045316780269882926%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164960045316780269882926&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-7441844.nonecase&utm_term=%E6%8C%89%E9%94%AE%E7%A8%8B%E5%BA%8F&spm=1018.2226.3001.4450

 

0
回复
2022-04-10 22:32

这个按键程序在我的控制板实验了一下,确实挺好用的,不会出现之前的那种按键处理程序会阻塞主程序运行的情况。

按键搞定后就准备配合TFTLCD来做一个按键菜单程序,这个对于我现在的水平来说还是略有难度,可能需要花费个一两周吧。

0
回复
2022-04-10 22:37

咦~论坛上传文件的功能跑哪儿去了?为啥我的头像会变得这么大呢。

0
回复
ruohan
LV.9
13
2022-08-03 08:58

我也在学这个STM32的显示程序,

用的是个并口屏,

0
回复
ruohan
LV.9
14
2022-08-03 09:17
@川理学子
后来在单片机论坛里闲逛的时候发现了一个非常牛逼的按键处理程序,牛逼到什么程度呢,就是整个的按键识别就只有四句话,而且还能区分长按和短按,废话不多说,上图[图片]除去变量定义,剩下的四句话就是用来识别按键的,Trg是用来识别短按的,而且支持检测多个按键同时按下。Cont是用来识别长按的。之所以说这个代码牛逼,就在于通过异或和位与操作后,就能实现常用的几种按键操作识别。而且长按按键不会阻塞主程序的运行。关于这个处理程序的出处,在这儿:https://blog.csdn.net/hooter1004/article/details/7441844?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164960045316780269882926%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164960045316780269882926&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-7441844.nonecase&utm_term=%E6%8C%89%E9%94%AE%E7%A8%8B%E5%BA%8F&spm=1018.2226.3001.4450 

GPIO_Data =GPIO_ReadInputData(GPIOB)>>8 & 0x1F;这句话是做什么的,

你是把按键接在了GPIOB的高8位了吗

0
回复
2022-08-06 20:57
@ruohan
GPIO_Data=GPIO_ReadInputData(GPIOB)>>8&0x1F;这句话是做什么的,你是把按键接在了GPIOB的高8位了吗

因为是用的GPIO的高8位做按键,在处理的时候把按键数据右移了8位和0X1F做相与提取按键状态编码。

0
回复
2022-08-31 11:27

还是入门东西,

0
回复
2022-09-16 18:35
@川理学子
今天晚上先来测试一下串口通信,8562和1115的驱动程序是在网上找得,之前测试过能够正常运行,等会儿看能不能用串口来控制8562输出,哈哈哈哈

锂电池充电器的软件 算不算难

0
回复
2022-09-18 22:40
@深圳市富源电电源有限公司
锂电池充电器的软件算不算难

看需求吧,识别端口电压极性和大小然后接通继电器输出给电池充电这种简单的,只要会单片机的都可以写

0
回复
chdqliwei
LV.3
19
2022-12-23 09:35

您好!是电池供电的吗?

1.功耗怎么样?

2.待机睡眠模式的功耗多大?

3.最近也在搞类似的项目。学习交流下

4.18668200038  方便的时候相互学习交流下!

0
回复