1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近玩stm8,想把24L01的程序移植到stm8. 把引脚定义好,程序基本没有变化,程序可以在51运行,但是在stm8上却不行, 后来直接写寄存器后在读,还是不成功,这里请问大家 51向stm8 移植 应注意什么问题,下面附上程序 看看是哪里的问题,谢谢大家
#include "IOSTM8S103F3.h" /************************I/O口定义********************************/ #define LED PB_ODR_ODR5 #define CSN PB_ODR_ODR4 #define SCK PC_ODR_ODR3 #define MOSI PC_ODR_ODR4 #define MISO PC_IDR_IDR5 //#define IRQ PC_IDR_IDR6 #define CE PC_ODR_ODR7 void Delay(unsigned int x) { unsigned int i,j; for(i=x; i>0; i--) { for(j=110; j>0; j--) { ++j; --j; } } } void InerDelay_us(unsigned char n) { for(;n>0;n--) { ++n; --n; } } unsigned char SPI_RW(unsigned char uuchar) { unsigned char bit_ctr; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit { MOSI = (uuchar & 0x80)>>7; // output 'uchar', MSB to MOSI uuchar = (uuchar << 1); // shift next bit into MSB.. SCK = 1; // Set SCK high.. //Delay(1); /*****************/ uuchar |= MISO; // capture current MISO bit SCK = 0; // ..then set SCK low again //Delay(1); /*************************/ } return(uuchar); // return read uchar } unsigned char SPI_Read(unsigned char reg) { unsigned char reg_val; CSN = 0; // CSN low, initialize SPI communication... SPI_RW(reg); // Select register to read from.. reg_val = SPI_RW(0); // ..then read registervalue CSN = 1; // CSN high, terminate SPI communication return(reg_val); // return register value } unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value) { unsigned char status; CSN = 0; // CSN low, init SPI transaction InerDelay_us(10); status = SPI_RW(reg); // select register SPI_RW(value); // ..and write value to it.. CSN = 1; // CSN high again return(status); // return nRF24L01 status uchar } void Init_GPIO(void) { //#define LED PB_ODR_ODR5 //#define CSN PB_ODR_ODR4 //#define SCK PC_ODR_ODR3 //#define MOSI PC_ODR_ODR4 //#define MISO PC_IDR_IDR5 //#define IRQ PC_IDR_IDR6 //#define CE PC_ODR_ODR7 PB_DDR_DDR5 = 1; PB_DDR_DDR4 = 1; PB_CR1 = 0xff; PB_CR2 = 0x00; PC_DDR_DDR3 = 1; PC_DDR_DDR4 = 1; PC_DDR_DDR5 = 0; PC_DDR_DDR6 = 0; PC_DDR_DDR7 = 1; PC_CR1 = 0xff; PC_CR2 = 0x00; } void Init_Cloc(void) { CLK_ICKR|=0x01; //开启内部HSI while(!(CLK_ICKR&0x02));//HSI准备就绪 CLK_SWR=0xe1; //HSI为主时钟源 CLK_CKDIVR=0x18; //HSI 8 分频 2M } int main(void) { Init_Cloc(); Init_GPIO(); LED = 1; CE=0; CSN=1; SCK=0; SPI_RW_Reg(0x20 + 0x06, 0x07); //0x20是读寄存器 0x06寄存器地址 while(1) { if(SPI_Read(0x06) == 0x07) //查看是否发送成功 { LED = 0; Delay(600); LED = 1; Delay(600); } } } |
|
相关推荐
2个回答
|
|
|
|
|
|
帮顶。。。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2569 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2365 浏览 5 评论
3210 浏览 3 评论
2837 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2789 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
668浏览 1评论
905浏览 0评论
1026浏览 0评论
671浏览 0评论
499浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:24 , Processed in 1.038363 second(s), Total 78, Slave 62 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号