打印
[STM32]

求stm8s103f的SPI程序例子

[复制链接]
3266|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

使用特权

评论回复
5
qq583678156|  楼主 | 2017-1-18 14:11 | 只看该作者
xyz549040622 发表于 2017-1-17 22:13
帮忙顶下,一直用的库,不是十分必要,不用寄存器的。

没有库文件,都是自己寄存器一个个用

使用特权

评论回复
6
NE5532| | 2017-1-18 14:33 | 只看该作者
qq583678156 发表于 2017-1-18 14:11
没有库文件,都是自己寄存器一个个用

8位机,没有那么复杂,我也是直接操作寄存器,你就整个寄存器一起赋值就是了啊,完全不需要去做位操作。

使用特权

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

只能这么去试试看了

使用特权

评论回复
8
xyz549040622| | 2017-1-18 15:29 | 只看该作者
qq583678156 发表于 2017-1-18 14:11
没有库文件,都是自己寄存器一个个用
00050 void SPI_DeInit(void)
00051 {
00052   SPI->CR1    = SPI_CR1_RESET_VALUE;
00053   SPI->CR2    = SPI_CR2_RESET_VALUE;
00054   SPI->ICR    = SPI_ICR_RESET_VALUE;
00055   SPI->SR     = SPI_SR_RESET_VALUE;
00056   SPI->CRCPR  = SPI_CRCPR_RESET_VALUE;
00057 }
00058
00059 /**
00060   * [url=home.php?mod=space&uid=247401]@brief[/url]  Initializes the SPI according to the specified parameters.
00061   * @param  FirstBit : This parameter can be any of the
00062   *         [url=home.php?mod=space&uid=144993]@ref[/url] SPI_FirstBit_TypeDef enumeration.
00063   * @param  BaudRatePrescaler : This parameter can be any of the
00064   *         @ref SPI_BaudRatePrescaler_TypeDef enumeration.
00065   * @param  Mode : This parameter can be any of the  
00066   *         @ref SPI_Mode_TypeDef enumeration.
00067   * @param  ClockPolarity : This parameter can be any of the
00068   *         @ref SPI_ClockPolarity_TypeDef enumeration.
00069   * @param  ClockPhase : This parameter can be any of the
00070   *         @ref SPI_ClockPhase_TypeDef enumeration.
00071   * @param  Data_Direction : This parameter can be any of the
00072   *         @ref SPI_DataDirection_TypeDef enumeration.
00073   * @param  Slave_Management : This parameter can be any of the
00074   *         @ref SPI_NSS_TypeDef enumeration.
00075   * @param  CRCPolynomial : Configures the CRC polynomial.
00076   * @retval None
00077   */
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)
00079 {
00080   /* Check structure elements */
00081   assert_param(IS_SPI_FIRSTBIT_OK(FirstBit));
00082   assert_param(IS_SPI_BAUDRATE_PRESCALER_OK(BaudRatePrescaler));
00083   assert_param(IS_SPI_MODE_OK(Mode));
00084   assert_param(IS_SPI_POLARITY_OK(ClockPolarity));
00085   assert_param(IS_SPI_PHASE_OK(ClockPhase));
00086   assert_param(IS_SPI_DATA_DIRECTION_OK(Data_Direction));
00087   assert_param(IS_SPI_SLAVEMANAGEMENT_OK(Slave_Management));
00088   assert_param(IS_SPI_CRC_POLYNOMIAL_OK(CRCPolynomial));
00089   
00090   /* Frame Format, BaudRate, Clock Polarity and Phase configuration */
00091   SPI->CR1 = (uint8_t)((uint8_t)((uint8_t)FirstBit | BaudRatePrescaler) |
00092                        (uint8_t)((uint8_t)ClockPolarity | ClockPhase));
00093   
00094   /* Data direction configuration: BDM, BDOE and RXONLY bits */
00095   SPI->CR2 = (uint8_t)((uint8_t)(Data_Direction) | (uint8_t)(Slave_Management));
00096   
00097   if (Mode == SPI_MODE_MASTER)
00098   {
00099     SPI->CR2 |= (uint8_t)SPI_CR2_SSI;
00100   }
00101   else
00102   {
00103     SPI->CR2 &= (uint8_t)~(SPI_CR2_SSI);
00104   }
00105   
00106   /* Master/Slave mode configuration */
00107   SPI->CR1 |= (uint8_t)(Mode);
00108   
00109   /* CRC configuration */
00110   SPI->CRCPR = (uint8_t)CRCPolynomial;
00111 }

STM8S103是可以用官方的库的。这里库中对spi的初始化。

使用特权

评论回复
9
flyywq| | 2017-3-14 09:00 | 只看该作者
去官网下载

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

54

帖子

0

粉丝