Sounds like a dirty throttle body. And what can happen with the battery is that if the battery is weak enough the PCM can loose the IAC motor step count and when you start it the PCM does not know where the IAC (idle air control motor)is at. Then the PCM has to run the IAC motor all the way open and closed to relearn its count and it will idle to low most of the time when it is relearning its count. Then if the throttle blade has any carbon build up on it that makes it idle even lower as it uses alot of the air going around the throttle blade for its idle and then the IAC will fine tune the idle by controlling the amount of air it lets in.
The PCM knows where the IAC motor should be by counting its steps and then the PCM knows by the eng temp where to set the IAC for starting at certain temps. In other words if the eng is first started in the morning and its 62 degrees out it may call for an IAC setting of 70 steps. Now when you start the eng at 200 degrees the PCM may be programmed for the IAC to be at 18 steps since it needs less air and a lower idle when warmed up.

So dirty throttle body blades can cause it to idle to low and stall and a weak battery can cause the PCM to loose the IAC count and then it wont know where to set the IAC and it can idle to low and stall.
I would remove the throttle body and clean the carbon off the throttle blades as we use an old tooth brush and some mild cleaner. Then test the battery and make sure its up to par. Then when you start the car you may have to hold the throttle a little until the PCM learns the IAC count and then it should idle good on its own. Ron