[STM32] 求stm8s103f的SPI程序例子

[复制链接]
3831|8
 楼主| qq583678156 发表于 2017-1-17 21:21 | 显示全部楼层 |阅读模式
求stm8s103f的SPI程序例子,

我按配置步骤
1. 通过SPI_CR1寄存器
2. 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系
3. 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。
4. 硬件模式下,在数据帧的全
SPI_CR2寄存器的SSM和SSI位为‘1’。
5. 必须设置MSTR和SPE位(只当NSS脚被连到高电平,这些位才能保持为‘
在这个配置中,MOSI脚是数据输出,而MISO脚是数据输入

第一步CLK_PCKENR1_bit.PCKEN11 = 1;  //使能SPI时钟  就有问题,用的IAR写的,谁能够提供个SPI的例程看一下吗,谢谢谢谢了
NE5532 发表于 2017-1-17 21:49 | 显示全部楼层
开时钟遇到什么问题了
xyz549040622 发表于 2017-1-17 22:13 | 显示全部楼层
帮忙顶下,一直用的库,不是十分必要,不用寄存器的。
 楼主| qq583678156 发表于 2017-1-18 14:10 | 显示全部楼层
NE5532 发表于 2017-1-17 21:49
开时钟遇到什么问题了

"CLK_PCKENR1_bit"  is  undefined
 楼主| qq583678156 发表于 2017-1-18 14:11 | 显示全部楼层
xyz549040622 发表于 2017-1-17 22:13
帮忙顶下,一直用的库,不是十分必要,不用寄存器的。

没有库文件,都是自己寄存器一个个用
NE5532 发表于 2017-1-18 14:33 | 显示全部楼层
qq583678156 发表于 2017-1-18 14:11
没有库文件,都是自己寄存器一个个用

8位机,没有那么复杂,我也是直接操作寄存器,你就整个寄存器一起赋值就是了啊,完全不需要去做位操作。
 楼主| qq583678156 发表于 2017-1-18 14:48 | 显示全部楼层
NE5532 发表于 2017-1-18 14:33
8位机,没有那么复杂,我也是直接操作寄存器,你就整个寄存器一起赋值就是了啊,完全不需要去做位操作。 ...

只能这么去试试看了
xyz549040622 发表于 2017-1-18 15:29 | 显示全部楼层
qq583678156 发表于 2017-1-18 14:11
没有库文件,都是自己寄存器一个个用
  1. 00050 void SPI_DeInit(void)
  2. 00051 {
  3. 00052   SPI->CR1    = SPI_CR1_RESET_VALUE;
  4. 00053   SPI->CR2    = SPI_CR2_RESET_VALUE;
  5. 00054   SPI->ICR    = SPI_ICR_RESET_VALUE;
  6. 00055   SPI->SR     = SPI_SR_RESET_VALUE;
  7. 00056   SPI->CRCPR  = SPI_CRCPR_RESET_VALUE;
  8. 00057 }
  9. 00058
  10. 00059 /**
  11. 00060   * [url=home.php?mod=space&uid=247401]@brief[/url]  Initializes the SPI according to the specified parameters.
  12. 00061   * @param  FirstBit : This parameter can be any of the
  13. 00062   *         [url=home.php?mod=space&uid=144993]@ref[/url] SPI_FirstBit_TypeDef enumeration.
  14. 00063   * @param  BaudRatePrescaler : This parameter can be any of the
  15. 00064   *         @ref SPI_BaudRatePrescaler_TypeDef enumeration.
  16. 00065   * @param  Mode : This parameter can be any of the  
  17. 00066   *         @ref SPI_Mode_TypeDef enumeration.
  18. 00067   * @param  ClockPolarity : This parameter can be any of the
  19. 00068   *         @ref SPI_ClockPolarity_TypeDef enumeration.
  20. 00069   * @param  ClockPhase : This parameter can be any of the
  21. 00070   *         @ref SPI_ClockPhase_TypeDef enumeration.
  22. 00071   * @param  Data_Direction : This parameter can be any of the
  23. 00072   *         @ref SPI_DataDirection_TypeDef enumeration.
  24. 00073   * @param  Slave_Management : This parameter can be any of the
  25. 00074   *         @ref SPI_NSS_TypeDef enumeration.
  26. 00075   * @param  CRCPolynomial : Configures the CRC polynomial.
  27. 00076   * @retval None
  28. 00077   */
  29. 00078 void SPI_Init(SPI_FirstBit_TypeDef FirstBit, SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler, SPI_Mode_TypeDef Mode, SPI_ClockPolarity_TypeDef ClockPolarity, SPI_ClockPhase_TypeDef ClockPhase, SPI_DataDirection_TypeDef Data_Direction, SPI_NSS_TypeDef Slave_Management, uint8_t CRCPolynomial)
  30. 00079 {
  31. 00080   /* Check structure elements */
  32. 00081   assert_param(IS_SPI_FIRSTBIT_OK(FirstBit));
  33. 00082   assert_param(IS_SPI_BAUDRATE_PRESCALER_OK(BaudRatePrescaler));
  34. 00083   assert_param(IS_SPI_MODE_OK(Mode));
  35. 00084   assert_param(IS_SPI_POLARITY_OK(ClockPolarity));
  36. 00085   assert_param(IS_SPI_PHASE_OK(ClockPhase));
  37. 00086   assert_param(IS_SPI_DATA_DIRECTION_OK(Data_Direction));
  38. 00087   assert_param(IS_SPI_SLAVEMANAGEMENT_OK(Slave_Management));
  39. 00088   assert_param(IS_SPI_CRC_POLYNOMIAL_OK(CRCPolynomial));
  40. 00089   
  41. 00090   /* Frame Format, BaudRate, Clock Polarity and Phase configuration */
  42. 00091   SPI->CR1 = (uint8_t)((uint8_t)((uint8_t)FirstBit | BaudRatePrescaler) |
  43. 00092                        (uint8_t)((uint8_t)ClockPolarity | ClockPhase));
  44. 00093   
  45. 00094   /* Data direction configuration: BDM, BDOE and RXONLY bits */
  46. 00095   SPI->CR2 = (uint8_t)((uint8_t)(Data_Direction) | (uint8_t)(Slave_Management));
  47. 00096   
  48. 00097   if (Mode == SPI_MODE_MASTER)
  49. 00098   {
  50. 00099     SPI->CR2 |= (uint8_t)SPI_CR2_SSI;
  51. 00100   }
  52. 00101   else
  53. 00102   {
  54. 00103     SPI->CR2 &= (uint8_t)~(SPI_CR2_SSI);
  55. 00104   }
  56. 00105   
  57. 00106   /* Master/Slave mode configuration */
  58. 00107   SPI->CR1 |= (uint8_t)(Mode);
  59. 00108   
  60. 00109   /* CRC configuration */
  61. 00110   SPI->CRCPR = (uint8_t)CRCPolynomial;
  62. 00111 }

STM8S103是可以用官方的库的。这里库中对spi的初始化。
flyywq 发表于 2017-3-14 09:00 | 显示全部楼层
去官网下载
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部