請問有沒有stm32 的CH451的例程;我將clk din load 配置成推挽輸出,dout配置成上拉輸入;其余原版照樣移植,按下按鍵 并不能觸發(fā)dout;不知道是哪里出現(xiàn)了問題。
?
?
?
void CH451_Init()
? {
???GPIO_InitTypeDef GPIO_InitStructure;?//GPIO
?RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOA,ENABLE);
?GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;???????
?GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
?GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
?GPIO_Init(GPIOA, &GPIO_InitStructure);
?
?
?
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);??
?
?GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ;? //上拉輸入
?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
?GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
?GPIO_Init(GPIOA, &GPIO_InitStructure);
?
?? DIN0; //先低后高,輸出上升沿通知CH451選擇4線串行接口
??? DIN1;
?//?? DCLK1; //置為默認(rèn)的高電平
//??? LOAD1;
? //? DOUT1;? //置為輸入
? }
void CH451_Write(uint dat,uint length)
??? {
?????? uint i;
?????
?????? LOAD0;???????????? //串行數(shù)據(jù)加載端置1
?????? for(;length>0;length--)
???????? {??????????
???????????
??????????? if((dat&0x01)==0x01)?? //判斷dat最低位是否為1
????????????????? DIN1;? // dat最低位為1的話就向din(串行數(shù)據(jù)輸入)寫1
??????????? else? DIN0;? // dat最低位為0的話就向din(串行數(shù)據(jù)輸入)寫0
?????? DCLK0;?????? //串行數(shù)據(jù)時(shí)鐘線 置0
?????? dat=dat>>1;?? //dat向右移動(dòng)一位
??????????? DCLK1;?????? //串行數(shù)據(jù)時(shí)鐘線 置1
?????
??????????
???????? }
?????? LOAD1;
??? }