-
家人们,PIC串口通信的程序出问题了 sos
刚学习PIC单片机的小白,用的dsPIC30f4011,程序是买板子送的,/*********************************************************************//*文件说明:uart发送接收*//*硬件配置:MCU:DSPIC30F4011,OSC:使用片外部4M16倍频64MHz振荡器..*//*版本:v1.0*//*使用说明:P7短路帽连接AN0,P6短路帽连接为AVDDAVSS提供标准电源*//*修改记录:*//********************************************************************/#include"p30f4011.h"#include"oled.h"_FOSC(0XC307);//FCKSM=11;时钟切换禁止0111=带有16倍频PLL的XT??16倍频PLL使能的XT晶振模式(晶振频率为4MHz到10MHz_FWDT(0X0000);//关狗_FBORPOR(0X3A3);//MCLREN禁止欠压2.7V上电延时64MS_FGS(0X03);//voidUART_Init(void);voidUART1_TX(unsignedcharc);unsignedcharUART1_RX(void);//接收数据unsignedcharData;voidSystem_Init(void)//系统初始化{OSCCON=0x33e0;//主振荡器新振荡器主振荡器4MHz64分频PLL锁定(使能)TRISB=0x0000;}voidUART_Init(void){U1MODE=0x0000;//8位数据无奇偶校验1停止位U1MODEbits.UARTEN=1;//使能UARTU1STA=0x0000;//状态和控制寄存器U1BRG=((64000000/4/16)/9600)-1;//64MHz波特率9600(按照计算公式)IEC0bits.U1TXIE=1;//发送中断允许IPC2bits.U1TXIP=7;//发送中断优先级7U1STAbits.UTXEN=1;//使能发送IEC0bits.U1RXIE=1;//接收中断允许IPC2bits.U1RXIP=6;//接收中断优先级6}voidUART1_TX(unsignedcharTXData)//发送数据{while(U1STAbits.UTXBF);U1TXREG=TXData;}unsignedcharUART1_RX(void)//接收数据{unsignedcharRXData;while(!U1STAbits.URXDA);RXData=U1RXREG;returnRXData;}voidDelay_1ms(unsignedintt)//t=1000大概1s{unsignedinti,j;for(i=0;i<t;i++)for(j=0;j<100;j++);}intmain(){System_Init();OLED_Init();//初始化OLEDOLED_Clear();UART_Init();disn(4,0,55);disn(5,0,69);disn(6,0,76);disn(7,0,67);disn(8,0,79);disn(9,0
3703浏览 0回复 27关注 -
king5555 回答了该问题
-
GD32F207使用硬件IIC实现主机发送,从机中断接收,求例程 sos
功能实现:多个设备通过IIC总线连接在一起。设备作为主机发送信息,作为从机接收信息使用开发板例程实现IIC主机发送,由于使用很多while循环,无法稳定使用,自己写了一个,通过定时器中断计时,在while中超过10ms就跳出,释放总线。中断接收没有例程,自己写了一个。使用两个IIC交替发送信息,无稳定。A发B收可以,b发A收不到,重启一下就可能B发A收可以,A发B收不到。下载视频所以想求相关例程。
5766浏览 0回复 22关注 -
stm32f103zg程序跳转到系统bootloader失败 sos
目前用的芯片是stm32f103zg,准备使用串口升级程序,看到手册AN2606中,该芯片是支持USART1通过系统bootloader更新程序的。现在的程序是用stm32cubemx生成的,程序如下intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration--------------------------------------------------------*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();/*USERCODEBEGIN2*//*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_10)==GPIO_PIN_RESET){JumpToBootloader();}else{JumpToApp();}}/*USERCODEEND3*/}/*USERCODEBEGIN4*/staticvoidJumpToBootloader(void){uint32_ti=0;void(*SysMemBootJump)(void);/*声明一个函数指针*/__IOuint32_tBootAddr=0x1FFFE000;//0x1FFF0000;/*STM32F103的系统BootLoader地址*//*关闭全局中断*/__disable_irq();/*关闭滴答定时器,恢复到默认值*/SysTick->CTRL=0;SysTick->LOAD=0;SysTick->VAL=0;/*设置所有时钟到默认状态,使用HSI时钟*/HAL_RCC_DeInit();/*关闭所有中断,清除中断挂起标志*/for(i=0;i<8;i++){NVIC->ICER=0xFFFFFFFF;NVIC->ICPR=0xFFFFFFFF;}/*使能全局中断*/__enable_irq();/*设置重映射到系统Flash*///__HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();/*跳转到系统BootLoader,首地址是MSP,地址+4是复位中断服务程序地址*/SysMemBootJump=(void(*)(void))(*((uint32_t*)(BootAddr+4)));/*设置主堆栈地址*/__set_MSP(*(uint32_t*)BootAddr);/*在RTOS工程,这条语句很重要,设置为特权模式,使用MSP指针*/__set_CONTROL(0);/*跳转到系统BootLoader*
3871浏览 0回复 22关注 -
华大测试过C++的环境吗?官方头文件都有bug,能C++编程? sos
以前的架构是用C++写的,在IAR8.3环境工程中option-->language1-->下改为C++支持,移植过来可以编绎过,但跑起来中断啊什么的会有问题。跑官方的例子是没有问题的。可笑的是官方的HC32L110_DDL_Rev1.1.4里部份头文件都有问题:#ifdef__cplusplusextern"C"{#endif.........#ifdef__cplusplus}//这个有的头文件都没有#endif希望有回复,认真点做测试。。。
2570浏览 0回复 22关注 -
用SYSTICK延时stm32f103ZET6的呼吸灯效果 sos
今天学习了pwm的原理后,尝试用SYSTICK模拟pwm的占空比变化来实现LED的呼吸效果,但没有成功.是因为不使用GPIO的pwm模式就无法输出模拟电压吗?代码如下:intmain(void){u32i;LED_Init();delay_init();while(1){for(i=0xFFFFF;i>0;i--){LED_Output_Low();delay_ms(1);LED_Output_High();delay_ms(9);}for(i=0xFFFFF;i>0;i--){LED_Output_Low();delay_ms(9);LED_Output_High();delay_ms(1);}}}在两个时间段内赋予不同的占空比,跟pwm的原理应该是一样的,但不知道为什么不能实现呼吸灯效果
3830浏览 0回复 22关注 -
tyw 回答了该问题
-
LCMXO2 -640HC 芯片时钟问题 sos
LCMXO2-640HC没有外接晶振,由STM32f730的PWM提供时钟可以运行起来么?STM32通过SPI往FPGA发数据,10us一组数据,FPGA收到数据通过2M通信频率发送出去,STM32输出PWM给FPGA做为系统时钟运行,请问下,这样可行么?
3350浏览 0回复 23关注 -
用Nuclei Studio打开gd官方例程会无法正常编译 sos
用NucleiStudio打开gd官方例程会报错,是什么原因,可能是设置不对,不知道有没有遇到同样问题的,怎么解决
5620浏览 0回复 23关注
没有更多了

问答