OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3650|回复: 12

菜鸟学习ing

[复制链接]

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
发表于 2018-10-1 14:11:13 | 显示全部楼层 |阅读模式
刚开始接触STM32,就发现问题接连而至,逛了一上午的帖子,发现很多人一路学来,慢慢记录着自己的学习笔记,感觉在分享自己的学习历程的同时,也给了后来的人一些鼓励和促进,对于有些实在头疼的问题,发出来与大家探讨也可以收获更多的灵感和帮助,鉴于以上好处,鄙人决定也开始分享自己的一些学习笔记和心得体会,如有不当之处,还望多多指教,不胜感激。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-1 14:36:11 | 显示全部楼层
其实原子哥的代码写的还算通俗易通,跟着他的视频看思路很清晰,但是有一个问题,就是如果仅仅是看视频或不完全手册,往往会出现以为理解了,但是在实际项目中去运用的时候束手无策,又得重新回过头来看,导致效率低下,尤其是时间紧,任务重的情况下会让人一脸懵逼,所以我个人认为第一遍可以放慢速度来学习,先把代码看一遍,不懂的地方再去看手册或看视频,有条件的可以将学到的东西通过自己的理解加以改写来实现自己的功能,这样的学习会让你更加加深对知识的理解和掌握。
好了,闲话不多说,其实我也是个新手,讲不出啥大道理,以后多写点实际点的东西吧。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-10-1
在线时间
0 小时
发表于 2018-10-1 14:59:12 | 显示全部楼层
你好。一起啊,我了是板子买了好长时间,一直没有下决心开始。
回复 支持 反对

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
发表于 2018-10-1 16:18:56 | 显示全部楼层
帮顶 现在被逼着做项目  玩了几个模块了烟雾 wifi 称重 超声波 tcp/ip协议 心率血压脉搏
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-2 12:41:25 | 显示全部楼层
船长luffy 发表于 2018-10-1 14:59
你好。一起啊,我了是板子买了好长时间,一直没有下决心开始。

好呀好呀,都好好学
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-2 12:42:12 | 显示全部楼层
GZH931022 发表于 2018-10-1 16:18
帮顶 现在被逼着做项目  玩了几个模块了烟雾 wifi 称重 超声波 tcp/ip协议 心率血压脉搏

挺好的,我都还没接触那些个东西,以后多多指教呀
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-2 13:03:22 | 显示全部楼层
//串口实验:
//截取部分代码
int main(void)
{       
        u8 t;
        u8 len;       
        u16 times=0;   //1

        delay_init();                     //延时函数初始化       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
        uart_init(9600);         //串口初始化为9600
        LED_Init();                           //初始化与LED连接的硬件接口

        while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度  // 2
                        printf("\r\n您发送的消息为:\r\n");
                        for(t=0;t<len;t++)
                        {
                                USART1->DR=USART_RX_BUF[t];
                                while((USART1->SR&0X40)==0);//等待发送结束
                        }
                        printf("\r\n\r\n");//插入换行
                        USART_RX_STA=0;
                }
1:首先要搞懂u8,u16,u32分别表示什么
typedef unsigned              char      uint8_t;
typedef unsigned short     int        uint16_t;
typedef unsigned              int        uint32_t;
typedef unsigned          __int64    uint64_t;
……
stm32f10x.h 这个文件主要是为了兼容旧版本吧
typedef   uint32_t  u32;///32位
typedef   uint16_t  u16;///16位
typedef   uint8_t    u8;///8位
typedef unsigned              char      uint8_t;
typedef unsigned short     int        uint16_t;
typedef unsigned              int        uint32_t;
typedef unsigned          __int64    uint64_t;
……
stm32f10x.h 这个文件主要是为了兼容旧版本吧
typedef   uint32_t  u32;///32位
typedef   uint16_t  u16;///16位
typedef   uint8_t    u8;///8位
---------------------本文来自 申请不容1 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u011642774 ... 101?utm_source=copy
这样就说的很明白了。
2.len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度  
这里小弟就有一个疑问,既然len定义是八位的,而USART_RX_STA&0x3fff肯定是16位的,那么是怎么得到数据长度的呢?可能是我C语言基础不行,但是翻了书貌似也没看到,所以希望有人能帮忙解释一下。
回复 支持 反对

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-10-3 13:05:15 | 显示全部楼层
黄瓜皮 发表于 2018-10-2 13:03
//串口实验:
//截取部分代码
int main(void)

这种写法不是太严格,
USART_RX_STA&0x3fff定义了最大长度为14位,
len只截取了低8位,可能是这里的应用只限制在8位长度内,
即最大字符为256个以内。
严格的写法应该显式地强制转换一下:
len=(u8)USART_RX_STA;
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-5 09:14:18 | 显示全部楼层
warship 发表于 2018-10-3 13:05
这种写法不是太严格,
USART_RX_STA&0x3fff定义了最大长度为14位,
len只截取了低8位,可能是这里的应 ...

谢谢指教,理解了
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-10 18:20:29 | 显示全部楼层
有人知道这种图要怎么画吗?
UJC[ROM1`HL`OUK%09SSY56.jpg
回复 支持 反对

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2018-10-10 19:08:15 | 显示全部楼层
想画好一点cad,一般的话普通画图软件就行
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-29 18:34:55 | 显示全部楼层
a5820736 发表于 2018-10-10 19:08
想画好一点cad,一般的话普通画图软件就行

已经画好了,谢谢,用的是Visio,感觉还行吧
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-9-29
在线时间
7 小时
 楼主| 发表于 2018-10-29 20:22:04 | 显示全部楼层
学了一段时间的java(考虑到以后工作方向偏软件),所以中间中断了很长时间,最近有个项目要用32来做,所以又不得不暂停Java的学习,开始学习32了,因为要用到IIC,看了一会,有几处地方自己不是很理解,也查阅了相关资料,还是没搞清楚,所以贴出来希望与大家探讨一下,不胜感激。

//初始化IIC
void IIC_Init(void)
{                                             
        GPIO_InitTypeDef GPIO_InitStructure;
        //RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOC, ENABLE );       

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        IIC_SCL=1;
        IIC_SDA=1;
}
按照中文参考手册上的8.1.11表24,上面不是说GPIO配置为开漏复用输出吗?原子哥的代码为什么是推挽输出了?



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 05:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表