OpenEdv-开源电子网

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

求助SPI实验

[复制链接]

36

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
424
金钱
424
注册时间
2015-12-16
在线时间
112 小时
发表于 2016-9-4 20:37:46 | 显示全部楼层 |阅读模式
3金钱
SPI试验中assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));的这一句有什么用啊?把这一句去了直接操作寄存器不行吗?


void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler){
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));
        SPI2->CR1&=0XFFC7;
        SPI2->CR1|=SPI_BaudRatePrescaler;        //设置SPI2速度
        SPI_Cmd(SPI2,ENABLE);

}


人的一生总得有个目标!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-4 21:54:32 | 显示全部楼层
这句话是为了检查你传进来的SPI时钟分频因子是不是在一个正确范围,在stm32f10x_conf.h中定义 #define USE_FULL_ASSERT    1,你就可以为这个函数void assert_failed(uint8_t* file, uint32_t line)添加实体,我是定义成用串口1输出错误信息的,如下
void assert_failed(uint8_t* file, uint32_t line)
{
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
while(1);
}
程序先初始化好串口1,然后你如果传入的参数不在正确的范围内,就会在串口1上输出错误信息,可以帮助你查找错误。
默认#define USE_FULL_ASSERT    1这个是没定义的,所以在这里你可以去掉assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));这句话,但是你要保证你传入的参数是在正确范围内,不然程序跑不起来就没有头绪了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 23:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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