|
本帖最后由 哀歌与世无争 于 2018-2-22 12:40 编辑 STM32CubeMX设置PC13和PA1为推挽输出,速度50M,用LL库生成的代码如下:
PC13被初始化成模拟输入了,而PC5没有设置却变成了推挽输出了。 PA1倒是没有错误,GPIOA寄存器如图:
总结: 后面又试了几个引脚,发现用LL库高位的引脚(GPIO8-15)初始化会有问题,像PC13,PB13这样的高位引脚,设置后实际改变的是对应低位的引脚PC5和PB5,而想要配置的引脚却变成其他模式了。如果初始化是低位的引脚(GPIO0-7)不会有错误,像PA1,PB1就能被正确初始化。 大家有没有遇到这样的问题呢? |
都是怎么学习TouchGFX的?
STM32F103 USB虚拟串口,采用的官方库非HAL库文件,过一段时间会断开链接
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
mmt 工具如何管理NAND和LCDinterface 设备
CubeMX再次生成代码时中文注释出现乱码,如何解决?
STM32G431 ADC只有软件触发,无法通过硬件触发
在stm32cubeAI上,打开Lanuch NeuralNet Studio提示打不开
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
能修改Cube MX 存放文档资料的文件夹吗?
stm32cubmx2是否有计划推广到其他stm32芯片使用?
微信公众号
手机版
环境STM32CubeMX 4.24.0,MDK 5.24
CUBEMX HAL stm32f030 主程序while发送,中断接收1个字节,有几率无法再开启中断接收。
主程序while只是打印几个变量值
printf("\r\n-----RcvCount=%8d , ErrCount=%8d RcErrCount=%8d\r\n",RcvCount,ErrCount,RcErrCount);
HAL_Delay(100);
中断接收 HAL_UART_Receive_IT(&huart1,(uint8_t*) &Uart1_Rx_Byte,1); //再次接收1个字符
里面什么都不干。
pc机100ms发送 0123456789. 一下就开始出现接收溢出,串口忙接收中断无法再开启启动的问题了
就这么简单的中断接收消息,主线程发送消息,一两百个字节就错误的无法用了。STM的库还能放心用在项目上?纯粹是熟悉和玩玩的摆设,能动不能用。
你的STM32F1是哪个系列的,具体什么型号?F1的型号太多了。
感觉不至于出现这样的问题呀,发个工程上来瞧瞧
LL库没玩过,不过我常用的F103系列中,印象是PC13速度不超过2MHZ,具体出自哪里,一时没找到。
我用HAL是好的,前几天刚测试过“YD-STMF1系列核心板”,就是某宝上出现最多的那个STM32F103C8T6小板板,上面的LED用的就是PC13,闪灯灯好着呢。
HAL库出来很久了,用了没啥问题,STM32F1的LL库最近才出的,发现有这个现象才来问问大家的。
没有质疑,只是有疑问,有什么不当的地方请指出
不好搞,用了很多宏,有的还是编译器的关键字,晦涩难懂,最好等官方完善了。还是标准库好,简单的封装,使用稳定。现在为了可视化出了cubemx和这两个库,碎片化严重。
可以试着修复一下嘛~我直接改pinpos并不能正确初始化,后面还有一个currenpin,应该是指向正确的寄存器位置,然后我干脆寄存器初始化了,后面又发现USART那似乎也存在问题,这里用似乎哈,昨晚太晚没深究。
currenpin后面有个 LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode)函数,经过这个函数后寄存器的值就开始不对了,跟踪进去里面有个
MODIFY_REG(*pReg, ((GPIO_CRL_CNF0|GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U)), (Mode << (POSITION_VAL(Pin) * 4U)));
看名字是在修改寄存器的值,但是这个东西全是用宏定义拼起来的,太多宏太恶心了,实在看不下去了。
sssssssssssssssssss