新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2015-12-13
- 在线时间
- 1 小时
|
5金钱
STM32驱动DAC的一个小问题:
用STM32驱动DA5541,代码如下,但是用示波器或者软件仿真逻辑分析仪都抓不到IO口的波形,请各位指出问题,非常感谢
DAC5541.c
#include "DAC5541.h"
#include "delay.h"
void DAC5541_Write(u16 Setdata)
{
unsigned int i,DIN;
DAC5541SET_LDAG(1);
DAC5541SET_SCLK(1);
DAC5541SET_CS(1);
for(i=0;i<16;i++)
{
DAC5541SET_CS(0);
DIN = Setdata&0x8000;
Setdata = Setdata<<1;
DAC5541SET_SCLK(0);
if(DIN==0X80000000)
{
DAC5541SET_DIN(1);
}
else
{
DAC5541SET_DIN(0);
}
DAC5541SET_SCLK(1);
}
DAC5541SET_CS(1);
DAC5541SET_LDAG(0);
delay_us(2);
DAC5541SET_LDAG(1);
}
DAC5541.h
#ifndef __DAC5541_H__
#define __DAC5541_H__
#include "stm32f10x.h"
#define DAC5541_CS (1<<6) // PB6
#define DAC5541_SCLK (1<<7) // PB7
#define DAC5541_DIN (1<<8) // PB8
#define DAC5541_LDAG (1<<9) // PB9
#define DAC5541SET_CS(x) GPIOB->ODR=(GPIOB->ODR&~DAC5541_CS)|(x ? DAC5541_CS:0)
#define DAC5541SET_SCLK(x) GPIOB->ODR=(GPIOB->ODR&~DAC5541_SCLK)|(x ? DAC5541_SCLK:0)
#define DAC5541SET_DIN(x) GPIOB->ODR=(GPIOB->ODR&~DAC5541_DIN)|(x ? DAC5541_DIN:0)
#define DAC5541SET_LDAG(x) GPIOB->ODR=(GPIOB->ODR&~DAC5541_LDAG)|(x ? DAC5541_LDAG:0)
/* ?????ù?÷ -----------------------------------------------------------------*/
void DAC5541_Configuration(void);
void DAC5541_Write(u16 Setdata);
#endif /*#ifndef __DAC5541_H__*/
主函数:
main.c
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "time.h"
#include "DAC5541.h"
int main(void)
{
delay_init(); //???±??????????
DAC5541_Write(0x0FFF);
TIM3_Int_Init(119,99);
while(1)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //?ì?é???¨??TIM????·??ú??·?:TIM ??????
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //????TIMx???????????í??:TIM ??????
LED1=!LED1;
}
}
}
程序仿真看不到PB口波形,示波器也看不到,好像定时也不好使,LED1没有闪烁
|
|