发新帖本帖赏金 0.08元(功能说明)我要提问
返回列表
[STM32F1]

大家怎么看正点原子的代码?

[复制链接]
楼主: 千帆归尽
手机看帖
扫描二维码
随时随地手机跟帖
neeringstu| | 2016-11-17 19:06 | 显示全部楼层
他家代码挺好的,给了我很大帮助

使用特权

评论回复
aqua2013| | 2016-12-25 08:57 | 显示全部楼层
楼主就是一2B
原子的教程唯一不够好的地方就是还不够讲得详细,不想了解寄存器你搞PC编程去,玩什么单片机

使用特权

评论回复
venus2004| | 2017-3-15 16:49 | 显示全部楼层
原子的资料确实不错。

使用特权

评论回复
13875772397| | 2017-3-20 14:05 | 显示全部楼层
原子的代码,有库函数和寄存器版本。
至于用哪个?看个人爱好,库函数简单容易上手,用寄存器对片子了解会更深

使用特权

评论回复
sunhuanhappy| | 2017-3-20 17:03 | 显示全部楼层
我还是喜欢库函数 一版本 可移植性强 便于维护。。。

使用特权

评论回复
正点原子 发表于 2014-11-23 23:53
我们代码有寄存器库函数两个版本。
所以,看我们的代码,请看全面了再做定论。

原子哥  混个脸熟 我是小菜鸟

使用特权

评论回复
zzytyy| | 2017-4-12 11:45 | 显示全部楼层
个人认为:做应用,库比较快;作BSP,寄存器效率高,也能更深入了解MCU的各个性能。

使用特权

评论回复
feelhyq| | 2017-4-12 12:03 | 显示全部楼层
为 原子哥点赞

使用特权

评论回复
MorganCode| | 2017-4-12 12:21 | 显示全部楼层
本帖最后由 MorganCode 于 2017-4-12 12:49 编辑

OpenEDV论坛很多没有得到解决的问题**!!

使用特权

评论回复
蔚飞| | 2017-6-7 18:12 | 显示全部楼层
楼主就一奇葩,自己搞不懂寄存器怪原子?还有移植性,尼玛,人家做的是入门资料,你以为是做工程项目?更何况原子的代码还有库版本,有些配置直接拿来用。搞不懂你为什么喷原子,难道真是为喷而喷?

使用特权

评论回复
LMCH| | 2017-6-7 18:36 | 显示全部楼层
作为一个半路出家的大龄爱好者,自学了一段时间,有时候真的有自己修改库函数的冲动,特别是HAL库,到底该不该放弃它

使用特权

评论回复
lai832| | 2017-6-8 00:42 | 显示全部楼层
什么也不说:
FYI:
//STM32F051的一个函数

void SPI_F051_Init(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  RCC->APB1ENR |= RCC_APB1ENR_SPI2EN;   //SPI2 CLK
  RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;      //SPI1 CLK
  
  RCC->APB1RSTR |= RCC_APB1RSTR_SPI2RST;
  RCC->APB2RSTR |= RCC_APB2RSTR_SPI1RST;
  RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI2RST);
  RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI1RST);
  //SPI2_RX
  Talk_Status.Bit.SPI_TX_Ongoing = 1;
//  SPI2->CR1 = //SPI_CR1_BIDIMODE            //2线单向模式     1:间线双向模式
            //| SPI_CR1_BIDIOE            //1:输出使能        0:输出禁止,只收  与15Bit 组合使用
            //| SPI_CR1_CRCEN            //CRC_EN
            //| SPI_CR1_CRCNEXT            //0 CRC紧接缓冲区  1:CRC来自寄存器
            //| SPI_CR1_CRCL            // 8位或16位CRC
            //| SPI_CR1_RXONLY            //全双工,  多从机时,从机置此位,防多从机同时发送
//             SPI_CR1_SSM             //禁软件从设备NSS 管理 如置此位,NSS由SPI_CR1_SSI决定
            //| SPI_CR1_SSI             //内部从设备选择
            //| SPI_CR1_LSBFIRST             //MSB先发,   如置1 LSB先发
            //| SPI_CR1_SPE             //SPI EN
//            | ((uint16_t)(0x0004) << 3)      //6M//Speed : (PCLK / N) 0,2 1,4.......7,256
            //| SPI_CR1_MSTR             //主机
            //| SPI_CR1_CPOL             //时钟空闲时极性, 0低  1高
            //| SPI_CR1_CPHA            //时钟相位 0第一个时钟对齐第一位数据  1,第二个时钟对齐第一个数据
              ;
  SPI2->CR2 = //SPI_CR2_LDMATX            //TX传输数为偶数, 1为奇数  传输小于或等于8时有意义         
            //| SPI_CR2_LDMARX            //RX..........
             //SPI_CR2_FRXTH            //RX FIFO触发RXNE阀值, 0  1/2(16Bit) 1 1/4(8Bit)
             ((uint16_t)(0x000F) << 8)    //数据位宽   值+1
            //| SPI_CR2_TXEIE             //TX缓冲空中断  1使能
            | SPI_CR2_RXNEIE             //RX缓冲非空中断 TXE标志置1时,产生中断
            //| SPI_CR2_ERRIE             //错误事件时产生中断 1使能
            | SPI_CR2_FRF             //0  Motorola模式  1 TI模式
            //| SPI_CR2_NSSP             //0 没NSS脉冲   1产生NSS脉冲  ---连续传输时
            //| SPI_CR2_SSOE             //0 SS禁用 1产生SS
            //| SPI_CR2_TXDMAEN             //TX缓冲DMA使能
            | SPI_CR2_RXDMAEN            //RX.......
            ;
  SPI2->CR1 |= SPI_CR1_SPE;
//  SPI2->SR &= (uint16_t)0xFFFE;
  

  //SPI1_TX
  SPI1->CR1 = //SPI_CR1_BIDIMODE            //2线单向模式     1:间线双向模式
            //| SPI_CR1_BIDIOE            //1:输出使能        0:输出禁止,只收  与15Bit 组合使用
            //| SPI_CR1_CRCEN            //CRC_EN
            //| SPI_CR1_CRCNEXT            //0 CRC紧接缓冲区  1:CRC来自寄存器
            //| SPI_CR1_CRCL            // 8位或16位CRC
            //| SPI_CR1_RXONLY            //全双工,  多从机时,从机置此位,防多从机同时发送
//            SPI_CR1_SSM             //禁软件从设备NSS 管理 如置此位,NSS由SPI_CR1_SSI决定
//            | SPI_CR1_SSI             //内部从设备选择
            //| SPI_CR1_LSBFIRST             //MSB先发,   如置1 LSB先发
            //| SPI_CR1_SPE             //SPI EN
            ((uint16_t)(0x0001 << 3))      //2:6M//Speed : (PCLK / N) 0,2 1,4.......7,256
            | SPI_CR1_MSTR             //主机
            //| SPI_CR1_CPOL             //时钟空闲时极性, 0低  1高
            //| SPI_CR1_CPHA            //时钟相位 0第一个时钟对齐第一位数据  1,第二个时钟对齐第一个数据
            ;
  SPI1->CR2 = //SPI_CR2_LDMATX            //TX传输数为偶数, 1为奇数  传输小于或等于8时有意义         
            //| SPI_CR2_LDMARX            //RX..........
            //| SPI_CR2_FRXTH            //RX FIFO触发RXNE阀值, 0  1/2(16Bit) 1 1/4(8Bit)
            ((uint16_t)(0x000F) << 8)    //数据位宽   值+1 //F
            //| SPI_CR2_TXEIE             //TX缓冲空中断  1使能
            //| SPI_CR2_RXNEIE             //RX缓冲非空中断 TXE标志置1时,产生中断
            //| SPI_CR2_ERRIE             //错误事件时产生中断 1使能
            | SPI_CR2_FRF             //0  Motorola模式  1 TI模式
            //| SPI_CR2_NSSP             //0 没NSS脉冲   1产生NSS脉冲  ---连续传输时
            //| SPI_CR2_SSOE             //0 SS禁用 1产生SS
            | SPI_CR2_TXDMAEN             //TX缓冲DMA使能
            //| SPI_CR2_RXDMAEN            //RX.......
            ;
  SPI1->CR1 |= SPI_CR1_SPE;             //SPI EN

  DMA_SPI_Init();
  DMA_SPI_Enable();
  Talk_Status.Bit.SPI_RX_Disable = 0;
  
  
  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
}

使用特权

评论回复
liyiui| | 2017-6-8 08:25 | 显示全部楼层
本帖最后由 liyiui 于 2017-6-8 08:28 编辑
正点原子 发表于 2014-11-23 23:42
看来兄弟恨我不浅啊。。。

我们也有库函数版本例程,兄台是否有看到?

现在很多的人缺乏感恩的心,这种人自己没有什么鸟贡献,指责别人来可是满口喷屎。很多人是通过你的资料开始接触了STM32,非常的谢谢你的资料!

使用特权

评论回复
litao31415| | 2018-5-9 19:15 | 显示全部楼层
像我STM32只用于一个项目的一个小功能,用完就扔的,可考虑使用库函数,简单,纯软件一样。不需要看太多文档!

使用特权

评论回复
ddllxxrr| | 2018-5-9 19:40 | 显示全部楼层
原子有不是寄存器版本的,我本人反对寄存器

使用特权

评论回复
xlndz| | 2019-1-22 09:51 | 显示全部楼层
寄存器版本好呀,省得来回切换大小写,记不住哪里该大写哪里又该小写。

使用特权

评论回复
xlndz| | 2019-1-22 09:54 | 显示全部楼层
学好寄存器版本可以对芯片资源了如指掌,闭着眼编程,寄存器版本就相当于51的汇编地位。不用也要了解。不学寄存器版本是学不到真东西的。

使用特权

评论回复
brucewoo| | 2019-1-22 10:06 | 显示全部楼层
都9102年了,还在争论寄存器还是库函数。。。。。。。

使用特权

评论回复
滨院小韩| | 2019-4-17 09:12 | 显示全部楼层
推荐大家一个靠谱的论文检测平台。重复的部分有详细出处以及具体修改意见,能直接在**上做修改,全部改完一键下载就搞定了。怕麻烦的话,还能用它自带的降重功能。哦对了,他们现在正在做毕业季活动, 赠送很多免费字数,可以说是十分划算了!地址是:http://www.paperpass.com/

使用特权

评论回复
abc597807912| | 2019-4-28 13:50 | 显示全部楼层
正点原子 发表于 2014-11-23 23:53
我们代码有寄存器库函数两个版本。
所以,看我们的代码,请看全面了再做定论。

你们的库函数版本也是很不规范的知道吗?可移植性太差了

使用特权

评论回复
发新帖 本帖赏金 0.08元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则